我正在做laravel项目,有一个包含字段lead_id
、lead_name
、email
的"lead"表。在我的项目中有一个编辑信息的选项,当我试图编辑潜在客户信息时,可能会出现我不想编辑电子邮件地址的情况。我的代码是
LeadRequest.php
public function rules()
{
return [
'lead_name' => 'required',
'email' => 'required|email|unique:lead',
]; }
我提供的电子邮件是唯一的,所以当我试图在不更改电子邮件地址的情况下更新个人资料时,它会向我显示一条错误消息,称为"电子邮件地址已被占用"。
因此,我尝试应用laravel验证规则"强制唯一规则忽略给定ID:",如下所示,
'email' => 'unique:lead,email_address,'.$lead.'lead_id',
但是如何提供$lead的价值。将消息显示为"未定义的变量"。我的控制器代码如下,
LeadController.php
public function update(LeadRequest $request, $id)
{
$lead = Lead::findOrFail($id);
$lead->update($request->all());
return redirect('lead');
}
请提出任何建议。
感谢您的支持,我在LeadRequest.php中尝试了以下代码,这对我有效,
public function rules()
{
return [
'lead_name' => 'required',
'email' => 'required|email|unique:lead,email,NULL,id,lead_id,'.Auth::user()->id,]; }
您可以参考链接,http://laravel.io/forum/03-11-2014-validation-unique-to-user
看看我的工作示例:
public function rulesUserEdit($id = NULL)
{
return [
'name' => 'required|min:3',
'oib' => 'required|min:11|max:11|unique:users' . ($id ? ",oib,$id" : ''),
];
}
它应该对你有用。当用户更新时,您需要在参数中传递用户id。当用户创建时,传递NULL,或者什么都不传递,因为NULL是默认参数。