我定义了以下路线:
Route::put('/{organisationId}', 'OrganisationController@update');
我有以下几点
FormRequest
对于更新请求:
<?php
namespace App\Http\Requests\Organisation;
use Illuminate\Foundation\Http\FormRequest;
class UpdateOrganisationRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'required|min:3|max:60|unique:organisations,name,' . $this->get('organisationId')
];
}
}
我试图在我的控制器中这样使用它:
public function update($organisationId, UpdateOrganisationRequest $request)
{
$organisation = $this->organisationRepository->byId($organisationId);
if (!$organisation) {
return $this->error('Organisation not found.', $this::Bad_Request);
}
$this->organisationRepository->update($organisation, $request->validated());
return $this->success(
fractal($organisation, new OrganisationTransformer())
);
}
这似乎会触发唯一验证错误,因为它似乎不会排除我尝试更新的id。
你知道为什么这样不行吗?
使用前
FormRequest格式请求
,这就是我如何实现上述相同功能的方式,并且运行良好:
https://pastebin.com/raw/CDEg6qLt
我能够用相同的名称更新相同的组织,并且唯一的验证规则不会触发验证异常。