Laravel: с методом в коллекции

#laravel

#laravel

Вопрос:

У меня есть приложение Laravel. В этом у меня есть задачи моделей и комментарии. Это отношение ManyToOne. У одной задачи может быть много комментариев. Я хочу вернуть все задачи с прикрепленными комментариями. Я могу сделать это с помощью одной задачи. Пример

   $Task = Task::find($id)->with("comments")->get();
 

Он возвращает мне задачу с полем «комментарии». В этом поле находится массив всех комментариев.

  {
    "id": 1,
    "type": "Aufgabe",
    "comments": [
        {
            "id": 1
        },
        {
            "id": 2
        },
        {
            "id": 3
        }
    ]
}
 

Но теперь я хочу получить ВСЕ задачи с приложенными комментариями. Я получаю все задачи с:

 Task::all()
 

Но сейчас моя проблема в том, что это набор задач, и в этой коллекции нет команды comments() или with() .

 "message": "Method Illuminate\Database\Eloquent\Collection::with does not exist.",
 

Я мог бы перебрать все задачи, вызвать with() для каждой из них, а затем создать ответ самостоятельно, но я думаю, что должен быть способ сделать это Laraval, который будет быстрым и однострочным

Комментарии:

1. Вам нужно сделать свой запрос следующим образом Task::with('comments')->find($id);

2. Спасибо. Не совсем то, что я искал, так как я хотел все задачи. Но Task::with("comments")->get(); сработало.

3. Вы можете сделать это, добавив его в свой Task Model then protected $with = ['comments'];

4. protected $with = ['comments']; это должно всегда возвращать комментарии, если я запрашиваю какую-либо задачу, не так ли? Тоже сработало бы, но я не хочу, чтобы комментарии всегда