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

Есть ресурс модели User, у которого есть несколько специальностей (specialities)
public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'specialities' => SpecialityResource::collection($this->activeSpecialities),
    ];
}


Ресурс специальности, в которой имеется ресурс для юзера.
public function toArray($request)
{
    return [
        'user' => UserResource::make($this->user),
        'special_price' => $this->special_price,
    ];
}


В итоге получаю рекурсию.
Где-то неверно понимаю концепцию ресурсов, но не соображу в чем именно.
  • Вопрос задан
  • 1171 просмотр
Решения вопроса 1
slowdream
@slowdream Автор вопроса
public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'specialities' => SpecialityResource::collection($this->whenLoaded('activeSpecialities')),
    ];
}


public function toArray($request)
{
    return [
        'user' => UserResource::make($this->whenLoaded('user')),
        'special_price' => $this->special_price,
    ];
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Web Developer
Нужно делать проверку на наличие реляций. Ну а из наличие будет зависеть от вашего запроса, если вы вызовите запрос with(‘user’) то они выведутся, если без то не выведется, ну или делать разные ресурсы ещё можно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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