首页 文章

无法找到方法项 - 多对多关系

提问于
浏览
0

我有一个具有多对多关系的产品和项目表以及一个数据透视表(item_product) .

这就是我的模型的样子 . 当我尝试检索属于产品(类别) $selectedItems= $products->items()->get(); 的项目时,我收到错误"Method items cannot be found" . 我似乎无法找到我的错误 . 请帮忙

Product

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

Item

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

Controller

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

1 回答

  • 0

    $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();
    

    我建议你阅读documentation on relationships .

相关问题