@remarkxaM

Yii2 Как вывести данные из одной таблицы если есть хотя бы одно соответствие в другой?

Есть две таблицы
1. categories (id, name, bla, bla, bla)
2. posts (id, text, category_id)
В таблице posts на поле category_id висит внешний ключ который связывается с полем categories.id
Вот что я хочу спросить у сервера на русском языке:
Я хочу получить все записи из categories для которых существует хотя бы одна запись в posts.

Т.е. мне нужны только те категории, в которых есть посты. Может быть вопрос идиотский, но у меня уже голова под вечер плохо соображает. Подскажите, как их вывести?
  • Вопрос задан
  • 778 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Для этого есть join, пример:

$customers = Customer::find()
    ->select([
        '{{customer}}.*', // получить все атрибуты покупателя
        'COUNT({{order}}.id) AS ordersCount' // вычислить количество заказов
    ])
    ->joinWith('orders') // обеспечить построение промежуточной таблицы
    ->groupBy('{{customer}}.id') // сгруппировать результаты, чтобы заставить агрегацию работать
    ->all();


Читать тут

Ну а если слово join встретилось в Вами первый раз в жизни, то предварительно читать тут
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
l1tero
@l1tero
Быдлокодер
Вот тут ответ. Вас интересует раздел про это и это. Если в кратце - в моделях ставить relations и в запросе делаете join
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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