@newbee

Yii2 activeRecord — joins — как грамотно получить результаты выборки?

Скажем, есть 2 таблицы: user(id, name, pass), и post(id, text, user_id), связанные FOREIGN KEY в модели Post:
public function getUser(){
    return $this->hasOne(User::className(), ['id' => 'user_id']);
}

Далее, у нас где-то происходит запрос постов с join'ом юзеров-авторов:
$query = Post::find()->joinWith('user');

Собственно, вопрос:

Как именно из результатов этой выборки получить id юзера, а как id поста?
(префиксы имен столбцов таблиц не рассматриваются, иначе, этот вопрос просто не был бы задан)
  • Вопрос задан
  • 1156 просмотров
Решения вопроса 3
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
$query->id; // id post
$query->user->id; // id user
Ответ написан
Комментировать
@BorisKorobkov Куратор тега MySQL
Web developer
Если только id юзера, то $post->user_id
Если другие свойства юзера, то $post->user->name
Для оптимизации надо добавить with (не joinWith!). joinWith нужен только при where по связанной таблицы.
Ответ написан
@davidnum95
Можно было и без join вовсе. Просто
$post = Post::findOne($id);
$user_id = $post->user->id;

Yii сам при необходимости подтянет нужные связи, это называется lazy loading.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы