При использовании построителя запросов создается впечатление, что у вас есть промежуточная таблица, в которой хранится информация о том, какой продукт и какой склад существуют, но если это отношение один ко многим, эта таблица не должна быть, вместо этого в таблице продуктов следуетесть warehouse_id
, который будет ссылаться на id
в таблице warehouses
, как вы сказали, что отношение один ко многим, а не много ко многим.
Таким образом, в вашей модели Warehouse
вы можете добавить:
public function products()
{
return $this->hasMany(Product::class);
}
А в вашей Product
модели:
public function warehouse()
{
return $this->belongsTo(Warehouse::class);
}
Исходя из имени вашей таблицы, вам может потребоваться установить $table
в вашей модели склада, чтобы она соответствовала:
protected $table = 'product_warehouse';
Тогда у вас есть много способов получить его, один из которых:
Warehouse::find($warehouse_id)->products;
// or
Warehouse::with('products')->where('id', $warehouse_id)->get();
// to get the warehouse to which the product belongs to
Product::find($product_id)->warehouse;