Выборка записей в Yii2
Чтобы выбрать записи из таблицы portfolio
, которые не опубликованы в реестре портфолио (reestrzayvkistependiy
), можно использовать метод not in
в Active Record. Это позволит исключить те записи, которые имеют соответствующие записи в таблице реестра.
Пример кода
Вот пример кода, который демонстрирует, как это можно сделать:
php
// Получаем все 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.