Laravel 仅更新更改的字段属性
Laravel update only the changed field attribute(s)
我正在尝试 运行 在我的 laravel 控制器中使用此更新功能。这里我的域名是唯一属性。
问题
但现在每次当我尝试更新任何字段而不是域名字段时,它都会向我显示一个错误,指出域名已经存在。那么我怎样才能只更新已更改的字段呢?我需要在以下功能中进行哪些更改。
public function update(Request $request,Website $app, $id)
{
$this->validate($request, [
'subDomainName' => ['required'],
'subDomainSuffix' =>['required'],
'packageType'=>['required'],
'themeid'=>['required'],
'lang'=>['required'],
'user'=>['required'],
'domain' => ['required', 'string','min:2', 'max:255','unique:apps'],
],$request->all());
$fullDomain = $request->domain;
$app->domain=$fullDomain;
Website::find($id)->update($request->all());
return redirect()->route('customers.index')
->with('success','Website updated successfully');
}
您可以 specify a model to be ignored 独特的属性:
public function update(Request $request, Website $websiteModel, int $id)
{
$website = $websiteModel->find($id);
$this->validate($request, [
'subDomainName' => ['required'],
'subDomainSuffix' => ['required'],
'packageType' => ['required'],
'themeid' => ['required'],
'lang' => ['required'],
'user' => ['required'],
'domain' => [
'required',
'string',
'min:2',
'max:255',
Rule::unique('apps')->ignore($website)
],
], $request->all());
$website->update($request->all());
return redirect()
->route('customers.index')
->with('success','Website updated successfully');
}
不要忘记导入 Rule
:use Illuminate\Validation\Rule;
我正在尝试 运行 在我的 laravel 控制器中使用此更新功能。这里我的域名是唯一属性。
问题
但现在每次当我尝试更新任何字段而不是域名字段时,它都会向我显示一个错误,指出域名已经存在。那么我怎样才能只更新已更改的字段呢?我需要在以下功能中进行哪些更改。
public function update(Request $request,Website $app, $id)
{
$this->validate($request, [
'subDomainName' => ['required'],
'subDomainSuffix' =>['required'],
'packageType'=>['required'],
'themeid'=>['required'],
'lang'=>['required'],
'user'=>['required'],
'domain' => ['required', 'string','min:2', 'max:255','unique:apps'],
],$request->all());
$fullDomain = $request->domain;
$app->domain=$fullDomain;
Website::find($id)->update($request->all());
return redirect()->route('customers.index')
->with('success','Website updated successfully');
}
您可以 specify a model to be ignored 独特的属性:
public function update(Request $request, Website $websiteModel, int $id)
{
$website = $websiteModel->find($id);
$this->validate($request, [
'subDomainName' => ['required'],
'subDomainSuffix' => ['required'],
'packageType' => ['required'],
'themeid' => ['required'],
'lang' => ['required'],
'user' => ['required'],
'domain' => [
'required',
'string',
'min:2',
'max:255',
Rule::unique('apps')->ignore($website)
],
], $request->all());
$website->update($request->all());
return redirect()
->route('customers.index')
->with('success','Website updated successfully');
}
不要忘记导入 Rule
:use Illuminate\Validation\Rule;