@nv_vasilencov

Как получить вложенные данные Yii2?

Есть структура
5e3e9337aa0d4467295450.png

Как получить из данные из post сразу с записью user и c его position?
Вот что пока получилось
public function getUser()
    {
        return  $this->hasOne(User::className(), ['id' => 'userId']);

    }


"data": [
        {
            "id": 161,
            "userId": 2,
            "text": 'Test'
            "user": {
                id:2,
                name: 'Ivan',
                positionId: 7
            }
        }
        ]
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Ответ не такой, который вам нужен, но есть повод задуматься. Если вы умеете работать Query Builder от Yii, а так же умеете применять Join, и понимаете в SQL запросах, то используйте хоть голые SQL запросы или при помощи QB от Yii. Почему? Потому что данные выходят к вам в виде ассоциативных массивах и такой массив вы либо уже загоняете в своё DTO, либо работаете как с обычным массивом, либо переформатируйте этот массив в json. Если вы будете получать данные по связям, то у вас возникнет большая проблема с производительностью и код от этого станет плохим. Это больше касается когда вам нужны данные для вывода списка (index). Если вам данные нужны в (view), то там можно попробовать работу по связям или виджеты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@MSAFT
У тебя в модели Post есть связь с User. А у User есть связь с Position?

Добавь в модель User, что-то вроде:

public function getPosition()
    {
        return  $this->hasOne(Position::className(), ['id' => 'positionId']);

    }
Ответ написан
Ваш ответ на вопрос

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

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