@asperin2
PHP разработчик

Как добавить связанную модель в ArrayHelper::toArray()?

Встала проблема, нужно отдавать данные со связанными данными в модели геттерами:
Если делать через asArray()
return Project::find()->with(['group', 'userShare', 'userShare.profile', 'author'])->where(['id' => $id])->asArray()->one();

Все отлично, все данные приходят.
Для inArray:
$project = Project::find()->with(['group', 'userShare', 'userShare.profile', 'author'])->where(['id' => $id])->one();
return $project->toArray([], ['group', 'userShare', 'userShare.profile', 'author']);

Не приходит объект userShare.profile, вопрос знатокам, можно ли как-то его получить ?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
настроить отдаваемые поля, подробнее почитать можно здесь
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@asperin2 Автор вопроса
PHP разработчик
Спасибо, все получилось, оставлю тут решение, вдруг кому пригодится:
$project = Project::find()->with(['group', 'userShare', 'author'])->where(['id' => $id])->one();
        return ArrayHelper::toArray($project, ['app\models\Project' => array_merge($project->fields(), ['group',
            'userShare' => function ($project) {
                $share = $project->userShare;
                $share = array_map(function($elem) {
                    $elem->profile = $elem->profileq;
                    return $elem;
                }, $share);
                return $share;
            },
            'author'])]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы