簡體   English   中英

從視圖laravel中的數據透視表中獲取數據

[英]Get data from pivot table in view laravel

我的關系數據有很多問題,首先我會放我的模型和控制器,我使用laravel 5.3

模型列表地址

class ListsAddresses extends Model
{
protected $table = "addresses";

protected $fillable = ['state', 'city', 'street_number', 'neighborhood', 'cp'];

public function lists()
{
    return $this->belongsToMany('App\Admin\Models\Lists', 'list_has_addresses' , 'address_id', 'list_id');
}

public function user(){
    return $this->belongsTo('App\Admin\Models\User');
}

public $timestamps = false;
}

控制器列出地址

public function form_edit_address( $id_list, $id_address ){

        $list = Lists::find( $id_list );

        $address = ListsAddresses::find( $id_address );

        return view( "admin.forms.form_edit_address" )
                    ->with( 'list', $list )
                    ->with( 'address', $address );

    }

表格視圖

<div class="col-md-6" style="padding-right: 0">
          <div class="form-group">
            <label for="order">Orden*</label>
            <input type="order" class="form-control" id="order" name="order" value="{{ $address->order }}" required>
          </div><!-- /.form-group -->
        </div><!-- /.col -->

我的數據庫表的數據庫具有下一個結構

id - title - order - list_id - address_id

如何在視圖中獲取與數據透視表中的地址對應的順序值?

EDDIT

這是我在創建新地址時保存訂單的方式

if( $address->save() ){

                $address_data = array();

                $address_title = htmlspecialchars( $request->input( "state" ).' '.$request->input( "city" ).' '.$request->input( "street" ).' '.$request->input( "neighborhood" ).' '.$request->input( "cp" ) );

                $address_order = $request->input( "order" );

                $address_data[ $address->id ] = array( 'title' => $address_title, 'order' => $address_order );

                $list->addresses()->attach( $address_data );
     }

也許首先將你的關系函數更改為withPivot('order')

public function lists()
{
    return $this->belongsToMany('App\Admin\Models\Lists',
        'list_has_addresses' , 'address_id', 'list_id')
       ->withPivot('order');
}

接下來,你完全分開獲取$ list和$ address,現在不能保證它們實際上是彼此相關的。 如果您沒有進行Route Model綁定,那么如果找不到任何東西,也許您應該有一些..OrFail()檢查以中止404:

public function form_edit_address( $id_list, $id_address )
{

    $address = ListsAddresses::findOrFail( $id_address );
    $list = $address->lists()->where('list_id', $id_list)->firstOrFail();

    return view( "admin.forms.form_edit_address" )
                ->with( 'list', $list )
                ->with( 'address', $address );
}

我認為$ list對象將是具有pivot屬性的對象,所以在你的視圖中你可能會說$list->pivot->order

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM