У меня есть такой запрос
return Logs::find()
->leftJoin('user', 'user.id = logs.user_id')
->orderBy('logs.id desc')
->offset($limit)
->limit(20)
->all();
Он возвращает все поля таблицы logs. Но мне нужно еще вернуть логин с таблицы user. Пробовал добавил так
->select(['logs.*', 'user.username'])
не сработало. Где у меня ошибка?
Полный текст запроса с select
return Logs::find()
->select(['logs.*', 'user.username'])
->leftJoin('user', 'user.id = logs.user_id')
->orderBy('logs.id desc')
->offset($limit)
->limit(20)
->all();
Вы можете в модели Logs создать связь с таблицей user:
public function getUser()
{
return $this->hasOne(User::class, ['id' => 'user_id'])->select(['username']);
}
И вызвать эту связь через метод joinWith():
return Logs::find()
->joinWith('user')
->orderBy('logs.id DESC')
->all();
Ваш же пример сформирует правильный SQL-запрос, но, по какой-то причине, select() в Active Record для связанных таблиц не сработает.