В yii2 добавить в условие выбора activerecord только тех записей которые не опубликованы в реестре портфолио. Вот выборка всех портфолио, а это таблица оформление портфолио в реестре портофолио. CREATE TABLE `reestrzayvkistependiy` ( `id_reestrzayvkistependiy` INT(11) NOT NULL AUTO_INCREMENT, `id_portfolio` INT(11) NOT NULL COMMENT ‘Внешний ключ таблицы Portfolio Достижения’, `id_sotr` INT(11) NULL DEFAULT NULL COMMENT ‘Внешний ключ таблицы Sotudnik Сотрудники’, `balls` TINYINT(4) NULL DEFAULT NULL COMMENT ‘Качество оценки, балл за достижение’, `datep` DATE NULL DEFAULT NULL COMMENT ‘Дата проверки достижения’, `id_zayvkastependiy` INT(11) NOT NULL COMMENT ‘Внешний ключ таблицы Заявка на стипендию’, PRIMARY KEY (`id_reestrzayvkistependiy`) USING BTREE, INDEX `id_portfolio` (`id_portfolio`) USING BTREE, INDEX `id_zayvkastependiy` (`id_zayvkastependiy`) USING BTREE, CONSTRAINT `FK_reestrzayvkistependiy_portfolio` FOREIGN KEY (`id_portfolio`) REFERENCES `portfolio` (`id_portfolio`) ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT `FK_reestrzayvkistependiy_zayvkastependiy` FOREIGN KEY (`id_zayvkastependiy`) REFERENCES `zayvkastependiy` (`id_zayvkastependiy`) ON UPDATE NO ACTION ON DELETE NO ACTION ) Попробуй через in вхождение в множество

Выборка записей в 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();

Объяснение кода

  1. Получение опубликованных портфолио: Сначала мы создаем запрос, который выбирает все id_portfolio из таблицы reestrzayvkistependiy. Метод column() возвращает массив значений, что удобно для дальнейшего использования.
  2. Фильтрация портфолио: Затем мы используем метод find() для модели Portfolio, добавляя условие where с оператором not in, чтобы исключить все портфолио, которые есть в массиве publishedPortfolioIds.

Этот подход позволяет эффективно фильтровать записи, используя возможности Active Record в Yii2.