@turindd

Запрос к базе данных 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()

Заранее благодарен.
Нужно ли использовать джойны или без них можно обойтись?
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@jazzus
whereHas
Product::where('category_id', 5)
    ->whereHas('shops', function ($query) {
        $query ->whereHas('mapPoints', function ($query) {
           $query->where('city_id', 10);
        });
})
->with(...)
->get();

with аналогично, запрос можно вынести в scope см документацию.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы