скажем, у меня такая структура.

| lines      |   | products |   | orders |
|------------|   |----------|   |--------|
| id         |   | id       |   | id     |
| product_id |   |----------|   |--------|
| order_id   |
|------------|

Есть ли способ в Laravel Eloquent загружать сопутствующие товары по заказу? Я попытался с hasManyThrough(Product::class, Line::class) безуспешно, потому что в таблице товаров нет ссылки на заказ. Есть ли метод, который может разрешить эту связь, или я должен написать необработанный запрос?

0
Matteo Palazzo 20 Дек 2019 в 18:25

1 ответ

Вы можете создать отношение многие ко многим в модели заказа:

class Order extends Model
{
    public function products()
    {
        return $this->belongsToMany('App\Product','lines', 'order_id', 'product_id');
    }
}

Тогда вы можете получить товары, связанные с заказом:

$order_id = 12;
$order = Order::find($order_id);
$order_products = $order->products;
1
MEDZ 20 Дек 2019 в 16:24