找不到方法项 - 多对多关系
我有一个产品和项目表,其中包含多对多关系和一个数据透视表(item_product)。找不到方法项 - 多对多关系
这就是我的模型的样子。当我尝试检索属于产品(类别)$selectedItems= $products->items()->get();
的项目时,出现错误“找不到方法项目”。我似乎无法找到我的错误在哪里。请帮助
产品
public function items()
{
return $this->belongsToMany('App\Item','item_product','product_id','item_id')
->withTimestamps();
}
项目
public function products()
{
return $this->belongsToMany('App\Product','item_product','item_id','product_id')
->withTimestamps();
}
控制器
$products = Product::all()->where('id',1);
$myItems= $products->items()->get();
return view('products',compact('myItems','products'));
$products
不是Product
一个实例试试这个:
$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();
我正在学习laravel,但你可以描述集合和实例之间的区别吗? – XamarinDevil
我得到另一个错误'试图获取非对象的属性' – XamarinDevil
@XamarinDevil更新了我的答案 –
我认为你需要发布更多的代码。是'产品'的'产品'和实例还是'产品'的集合? –
'$ products-> items;'应该工作.... Laravel自动转换作为你的产品模型属性访问的方法,并为你执行'get()' –
@mtinsley看看我的更新..控制器 – XamarinDevil