Laravel:仅当它出现在请求中时编辑值?



在我的应用程序中,用户可以更新条带连接帐户的信息,但是我只想实际更新请求有效负载中出现的字段的值,我可以用一个简单的if检查来做到这一点,但是我更新条带数组方法的方式使这个问题变得更加复杂。

有什么语法糖或技巧使这更容易吗?

我的更新方法是什么样子的;

public function editConnectedAccount(Request $request)
{     
$account = Account::retrieve($request->connectedAccountId);
Account::update(
$request->connectedAccountId,
[
'type' => 'custom',
'country' => 'ES',
'email' => $request->userEmail,
'business_type' => 'individual',
'tos_acceptance' => [ 'date' => Carbon::now()->timestamp, 'ip' => '83.46.154.71' ],
'individual' => 
[ 
'dob' => [ 'day' => $request->userDOBday, 'month' => $request->userDOBmonth, 'year' => $request->userDOByear ], 
'first_name' => $request->userName, 
'email' => $request->userEmail, 
'phone' => $request->userPhone,
'last_name' => $request->userSurname,
//'ssn_last_4' => 7871,  
'address' => [ 'city' => $request->userBusinessCity, 'line1' => $request->userBusinessAddress, 'postal_code' => $request->userBusinessZipCode, 'state' => $request->userBusinessCity ]
],
'business_profile' => 
[ 
'mcc' => 5812, //got it
'description' => '',
//'url' => 'https://www.youtube.com/?hl=es&gl=ES', //got it
],
'capabilities' => [
'card_payments' => ['requested' => true],
'transfers' => ['requested' => true],
],
]
);

return response()->json([
'account' => $account,
], 200);

考虑使用Form Request来执行验证。这将在一开始清理你的控制器,也使验证(永远不要相信用户输入!)可重用。

假设验证成功,从控制器方法内部调用$request->validated()将只返回当前和已验证的字段。然后您可以使用fill($request->validated())update($request->validated())

最新更新