#laravel #eloquent #orm #relationship
Вопрос:
Я создаю API. В этом репозитории есть метод под названием show (), при котором возвращается контакт. Пользователь должен указать идентификатор контакта и может предоставить массив загружаемых отношений и массив атрибутов контакта, называемых полями.
return $this->contacts::with($request->relationships)->findOrFail($request->id, $request->fields);
Но когда $request->fields
это предусмотрено, все отношения возвращают значение null.
Json запроса:
{
"id": 75,
"fields": ["id", "name"],
"relationships": ["lead", "phone", "email", "address"]
}
Ответ Json:
{
"id": 75,
"name": "Edgard Cesar Bertelli dos Reis",
"lead": null,
"phone": null,
"email": null,
"address": null
}
Есть какие-нибудь идеи о том, где я могу ошибаться?
Ответ №1:
Вы должны добавить имена отношений во вторые параметры для findOrFail
, в вашем примере это может быть так:
$fields = array_merge($request->relationships, $request->fields);
return $this->contacts::with($request->relationships)->findOrFail($request->id, $fields);