#laravel #eloquent #rest #eloquent-relationship
Вопрос:
В настоящее время я работаю в рамках laravel.
Вот мой сценарий: скажем, у меня есть ПОЛИТИКА трех организаций: ПОЛЬЗОВАТЕЛЬ, ПОЛУЧАТЕЛЬ.
Отношение: У ПОЛЬЗОВАТЕЛЯ много БЕНЕФИЦИАРОВ, ПОЛИТИК. ПОЛИТИКА принадлежит ПОЛЬЗОВАТЕЛЮ. ПОЛУЧАТЕЛЬ принадлежит ПОЛЬЗОВАТЕЛЮ
Теперь, когда пользователь выбирает просмотр/обновление информации о политике, я должен отправлять (данные JSON на интерфейс) информацию о политике, информацию о пользователях, а также информацию о бенефициарах, где пользователь может обновить эти данные.
Во-первых, я извлек политику с помощью policy_id и нетерпеливо загрузил пользователя и User.бенефициаров, отформатировал все данные и вернул JSON.
Конечная точка для отображения всей информации о политике, пользователе и бенефициарах — GET /api/v1/policy/{policy_id}
конечная точка обновления информации о пользователе-ПАТЧ /api/v1/политика/{идентификатор политики}/информация о пользователе
конечная точка обновления информации о получателе — ПАТЧ /api/v1/политика/{идентификатор политики}/информация о получателе
Обновить информацию о пользователе очень просто. У меня есть policy_id по запросу, и я могу использовать красноречивое отношение для обновления информации о пользователе примерно так:
$policy->user->update($postData)
Но в случае бенефициаров у пользователя может быть много бенефициаров.
Скажем, у пользователя было 2 бенефициара, и я отправил данные JSON этих бенефициаров.
Взамен я получаю почтовые данные бенефициаров для обновления в качестве
{
{
"first_name": "Tassy",
"middle_name": "Prasad",
"last_name": "Villis",
"relation": "Mother",
"dob": "08/01/1942",
},
{
"first_name": "Pradeep",
"middle_name": "",
"last_name": "Villis",
"relation": "Brother",
"dob": "11/03/1938",
}
}
Один из способов-перебрать эти данные и обновить их следующим образом
foreach($request->validated() as $key => $data){
$policy->user->beneficiaries[$key]->update($data)
}
Но это может и не должно быть правильным способом сделать это.
Как обновить информацию о получателе? Должен ли я отправить соответствующий идентификатор бенефициара на интерфейс? Если да, то что, если я не верну эти идентификаторы бенефициаров с данными post? Что-то вроде этого —
{
"34657": {
"first_name": "Tassy",
"middle_name": "Prasad",
"last_name": "Villis",
"relation": "Mother",
"dob": "08/01/1942",
},
"34658": {
"first_name": "Pradeep",
"middle_name": "",
"last_name": "Villis",
"relation": "Brother",
"dob": "11/03/1938",
}
}
Надеясь, что эти идентификаторы будут присутствовать с данными post или разработчик переднего плана отправит меня обратно точно по этому шаблону(с идентификаторами в качестве ключа)?
Или мне следует изменить свои конечные точки, предоставляя первичные ключи?
P. S : Это фреймворк laravel. Так что, если в рукаве есть какой-нибудь подвох.
Комментарии:
1. Вы можете использовать uuid