2017-10-21 3 views
0

多対多のリレーションシップとピボットテーブル(item_product)を持つproductsおよびitemsテーブルがあります。メソッドアイテムが見つかりません - 多対多リレーションシップ

これは私のモデルの外観です。製品(カテゴリ)$selectedItems= $products->items()->get();に属するアイテムを取得しようとすると、「メソッドアイテムが見つかりません」というエラーが表示されます。私のエラーがどこにあるかわからない。コントローラ

public function products() 
    { 
     return $this->belongsToMany('App\Product','item_product','item_id','product_id') 
     ->withTimestamps(); 
    } 

項目

public function items() 
    { 
     return $this->belongsToMany('App\Item','item_product','product_id','item_id') 
     ->withTimestamps(); 
    } 

製品

助けてください

 $products = Product::all()->where('id',1); 
     $myItems= $products->items()->get(); 
     return view('products',compact('myItems','products')); 
+0

あなたのコードをもっと投稿する必要があると思います。 '$ products'と' Product'のインスタンスか 'Product'のコレクションですか? –

+0

'$ products-> items;'はうまくいくはずです.... Laravelはアクセスするメソッドを自動的に製品モデルのプロパティとして変換し、 'get()'を実行します。 –

+0

@mtinsleyは私の更新を見ます..コントローラー – XamarinDevil

答えて

0

$productsProduct

のインスタンスがこれを試してみてくださいません:

$product = Product::findOrFail(1); 
$myItems = $product->items; 
return view('products',compact('myItems','product')); 

説明:

$product = Product::findOrFail(1); 

これは、IDによって、単一の製品モデルを取得、またはその製品が存在しない場合に例外をスローします。

$myItems = $product->items; 

これは、アイテムのコレクションに$myItemsを設定します。これは、

$myItems = $product->items()->get(); 

と同じです。documentation on relationshipsを読むことをお勧めします。

+0

私はlaravelを学んでいますが、コレクションとインスタンスの違いを説明できますか? – XamarinDevil

+0

他のエラー '非オブジェクトのプロパティを取得しようとしています' – XamarinDevil

+0

@XamarinDevilは私の答えを –

関連する問題