Запрос к базе данных LARAVEL

Всем привет, уважаемые программисты) Буду благодарен за помощь.

Необходимо правильно составить запрос к БД.

  1. таблица shops (магазин) id,

  2. таблица shop_map_point (точку на карте, у каждого магазина может быть несколько точек) id, city_id

  3. таблица products (товар) id, shop_id, category_id

  4. таблица categories (категория) id,

  5. city (города) id,

Мы находимся в категории id = 5, в городе id = 10 Нужно выбрать все товары, у которых

  • МАГАЗИН имеет ТОЧКУ НА КАРТЕ (city_id = 10)
  • У этих МАГАЗИНОВ есть ТОВАР в этой КАТЕГОРИИ (category_id = 5)
  • использовать лен.загрузку к товару (чтобы потом при foriech к товару без лишних запросов можно было добавить название магазина) ->with()

Заранее благодарен. Нужно ли использовать джойны или без них можно обойтись?


Ответы (1 шт):

Автор решения: Den
Product::where('category_id', 5)
->whereHas('shops', function ($query) {
    $query ->whereHas('mapPoints', function ($query) {
       $query->where('city_id', 10);
    });})->with(...)->get();
→ Ссылка