Выборка записей в Yii2
Чтобы выбрать записи из таблицы portfolio
, которые не опубликованы в реестре портфолио (reestrzayvkistependiy
), можно использовать метод not in
в Active Record. Это позволит исключить те записи, которые имеют соответствующие записи в таблице реестра.
Пример кода
Вот пример кода, который демонстрирует, как это можно сделать:
php
1 2 3 4 5 6 7 8 9 10 | // Получаем все id портфолио, которые есть в реестре $publishedPortfolioIds = (new \yii\db\Query()) ->select('id_portfolio') ->from('reestrzayvkistependiy') ->column(); // Выбираем все портфолио, которые не находятся в списке опубликованных $unpublishedPortfolios = Portfolio::find() ->where(['not in', 'id_portfolio', $publishedPortfolioIds]) ->all(); |
Объяснение кода
- Получение опубликованных портфолио: Сначала мы создаем запрос, который выбирает все
id_portfolio
из таблицыreestrzayvkistependiy
. Методcolumn()
возвращает массив значений, что удобно для дальнейшего использования. - Фильтрация портфолио: Затем мы используем метод
find()
для моделиPortfolio
, добавляя условиеwhere
с операторомnot in
, чтобы исключить все портфолио, которые есть в массивеpublishedPortfolioIds
.
Этот подход позволяет эффективно фильтровать записи, используя возможности Active Record в Yii2.