Как добавить select() при связь hasMany?

Для добавления выражения SELECT при использовании связи hasMany в Yii, вам нужно использовать метод with() и анонимную функцию для определения дополнительных настроек запроса.

Предположим, у вас есть две модели: User и Post. Каждый пользователь может иметь много постов. Вот как вы можете добавить select() при использовании связи hasMany в этом случае:

// Метод в модели User
public function getPosts()
{
    return $this->hasMany(Post::class, ['user_id' => 'id']);
}

// Ваш запрос с select()
$users = User::find()
    ->with([
        'posts' => function ($query) {
            $query->select(['id', 'title', 'content']);
        }
    ])
    ->all();

В этом примере мы определяем метод getPosts() в модели User, который устанавливает связь hasMany между пользователями и их постами.

Затем, при выполнении запроса к модели User, вы можете использовать метод with() и определить анонимную функцию для связи posts. Внутри этой функции мы используем метод select() для определения выбранных столбцов поста.

В результате, при выполнении запроса $users = User::find()->with(...) мы получим все пользователей с их постами, но только с выбранными столбцами поста (id, title, content).

Вы также можете использовать другие методы и функции для дальнейшей настройки запроса, такие как where(), orderBy() и т. д., чтобы указать дополнительные условия или порядок сортировки данных.

Таким образом, вы можете добавить select() при использовании связи hasMany в Yii, чтобы получить только необходимые поля в связанных моделях.