У меня есть такой запрос
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 для связанных таблиц не сработает.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В DetailView в своей дефолтной реализации всё выводится парами ключ->значение
Функция array_diff_keys() не совсем так работаетНужно чтобы результатом было полное расхождение
У меня на сайте генерируется xml-файлВыборку я сделал через цикл for кусками по 50 тыс записей за цикл (ранее была выборка сразу всех записей)