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');
}

不要忘记导入 Ruleuse Illuminate\Validation\Rule;