laravel渴望通过模型加载

时间:2019-08-06 08:32:53

标签: php laravel

我有3个具有这种关系的表:

  • 用户(拥有一个商店,拥有许多产品)
  • 产品(属于用户)
  • 商店(属于用户)

现在,如果我现在想在用户商店中获取用户产品,我可以这样做:

public function show($id)
    {
        $store = Store::findOrFail($id);
        $products = Product::where('user_id', $store->user_id)->get();
        return view('admin.stores.show', compact('store', 'products'));
    }

但是我想要的东西是这样的:

public function show($id)
    {
        $store = Store::where('id', $id)->with('products')->first();
        return view('admin.stores.show', compact('store'));
    }

问题

由于products列中的内容,如何在storesuser_id之间建立联系,以避免出现此行:

$products = Product::where('user_id', $store->user_id)->get();

1 个答案:

答案 0 :(得分:2)

也许您应该在StoreProduct之间添加关系。将此添加到Store模型中:

public function products()
{
    return $this->hasMany(Product::class, 'user_id', 'user_id');
}

并将其发送到Product

public function store()
{
    return $this->belongsTo(Store::class, 'user_id', 'user_id');
}