как правильно возвращать Ресурсы API (Resource) laravel?

по докам https://laravel.su/docs/8.x/eloquent-resources

связь многие ко многим

class TagController extends Controller
{
 public function index()
    {
      
       return TagResource::collection(Tag::orderBy('created_at', 'desc')->get());
    }
}

class TaskController extends Controller
{
 public function index()
    {
      
       return TaskResource::collection(Task::orderBy('created_at', 'desc')->get());
    }
}

resourses получается если так сделать то будет бесконечный цикл или как это назвать т.е они в этих местах 'tags' => TagResource::collection($this->tags), 'tasks' => TaskResource::collection($this->tasks), будут друг друга вызывать как этого избежать?

class TaskResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'created_at' => $this->created_at,
            'tags' => TagResource::collection($this->tags),
        ];
    }
}

class TagResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'created_at' => $this->created_at,
            'tasks' => TaskResource::collection($this->tasks),
        ];
    }
}

Ответы (0 шт):