Как получить username автора коментария по связи?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Как получить username автора коментария по связи?

Сообщение alexa777 »

Есть у меня связь

Код: Выделить всё

 public function getUser()
    {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }
    
Для вывода автора поста я использую

$model->user->username;
И все ок

Начинаю использовать в комментах для вывода автора коммента, выводится везде автор поста
Можно ли использовать эту связь чтобы выводить автора коммента? чтобы не делать отдельный get запрос в базу ?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как получить username автора коментария по связи?

Сообщение andku83 »

Предполагаю что:

Код: Выделить всё

$comment->user->username;
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Как получить username автора коментария по связи?

Сообщение alexa777 »

andku83 писал(а): 2018.12.26, 03:55 Предполагаю что:

Код: Выделить всё

$comment->user->username;
Спасибо, работает
А как по связи выбрать отдельный комментарий? отдельного пользователя и все коментарии одного пользователя?
По связи $post->comment
Выводит массив обьектов всех коментов этого поста
вот связь

Код: Выделить всё

public function getComments()
    {
        return $this->hasMany(Comment:className(), ['parent_id' => 'id']);
    }
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как получить username автора коментария по связи?

Сообщение andku83 »

alexa777 писал(а): 2018.12.26, 08:16 По связи $post->comment
Выводит массив обьектов всех коментов этого поста
а разве там должно быть что-то другое?!

Если прописаны все связи:

Код: Выделить всё

        foreach ($post->comments as $comment) {
            var_dump($comment);
            var_dump($comment->user);
            foreach ($comment->user->comments as $user_comment) {
                var_dump($user_comment);
            }
        }
Ответить