Как соединить три таблицы в Laravel?

У меня есть три таблицы: Orders, Products, Products_images.

Мне нужно получить все заказы, для этого я делаю:

$orders = Order::with("products")->where("user_id", Auth::guard('api')->user()->id)->orderBy('id')->get();

Где with("products") — функция в модели Order

public function products()
    {

        return $this->hasOne("App\Product", "id", "product_id");
    }

Итак, я соединил две таблицы. Также мне нужно соединиться с таблицей Products с таблицей Products_images в этом запросе.

Как я могу это сделать?


person Babaev    schedule 04.09.2016    source источник


Ответы (1)


Добавьте функцию product_images в модель продуктов.

public function product_images() { return $this->hasMany("App\ProductImage");}

Измените App\ProductImage в приведенной выше строке, чтобы отразить модель для вашей таблицы. Затем вы можете получить доступ ко всем записям изображений продуктов, которые принадлежат вашим продуктам, выполнив следующие действия:

$orders = Order::with("products.product_images")->where("user_id", Auth::guard('api')->user()->id)->orderBy('id')->get();

Посмотрите под вложенной нетерпеливой загрузкой по этой ссылке: https://laravel.com/docs/5.3/eloquent-relationships#eager-loading

person pseudoanime    schedule 04.09.2016