【发布时间】:2017-10-27 19:56:24
【问题描述】:
我目前有两个表,分别存储用户和客户。客户端与用户以一对一的关系关联。
我目前正在像这样存储和更新模型,但感觉相当笨重......
public function store(Request $request)
{
$requestData = $request->all();
$user = new User();
$user->fill($requestData);
$user->save();
$client = new Client;
$client->fill($requestData);
$client->user()->associate($user);
$client->save();
return response()->json($client->toArray(), 201, ['id' => $client->id]);
}
public function update(Request $request, $id)
{
try {
$client = Client::findOrFail($id);
$user = User::findOrFail($client->fk_user);
} catch (ModelNotFoundException $e) {
return response()->json([
'error' => [
'message' => 'Client not found',
]
], 404);
}
$requestData = $request->all();
$user->fill($requestData);
$user->save();
$client->fill($requestData);
$client->user()->associate($user);
$client->save();
return response()->json($client->toArray(), 200);
}
有没有办法对其进行重构,以避免将用户和客户作为单独的模型进行工作。有没有办法填充一个客户端,然后填充父用户模型?
只是想知道,谢谢!
【问题讨论】:
-
可能先提取一些逻辑到自己的方法中,例如存储用户和客户端。然后,您还可以获得重用它们的能力。您还可以设置一些响应方法,这样您就不需要在存储/更新方法中包含所有响应类型和状态代码垃圾。
-
嗯,好的,谢谢@IsakBerglind,但是在这种情况下,Laravel 没有办法填充客户端然后填充用户吗?
-
您可以将其添加到客户端模型上,向其发送请求数据并保存。例如:$client->saveAndAssociateUser($requestData);
-
另外,当用户期望一个 json 响应时,检查这个以处理异常,这样你就可以摆脱那个 trycatch stackoverflow.com/questions/28944097/…
-
谢谢,请随时添加答案,我会接受!
标签: php laravel laravel-5 foreign-key-relationship