@turindd

Как сделать запрос к базе данных?

Как составить запрос к БД?
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()
  • Вопрос задан
  • 180 просмотров
Решения вопроса 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 см документацию.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы