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