这是我的规则:
表名是: company_info
我只有两个字段 CompanyID 和电话
在更新部分,我想检查其他列是否存在电话号码,如果自己的字段有,我不想检查它。 (目前它检查自己的数据并且已经使用电话号码返回)。
'Telephone' => 'unique:company_info',
然后我尝试使用以下规则
但我错过了
'Telephone' => 'unique|unique:company_info,CompanyID,'.$companyid)
或
'Telephone' => 'unique|unique:company_info,Telephone,'.$companyid)
或
'Telephone' => 'unique|unique:company_info,Telephone,'.$Telephone)
这是我的代码:
$companyid = Input::get('CompanyID');
$Telephone = Input::get('Telephone');
$rule = array(
'Telephone' => 'unique|unique:company_info,CompanyID,'.$companyid
)
$validator = Validator::make($data,$rule);
if ($validator->fails())
{
$messages = $validator->messages();
return "0"."||".$messages = $validator->messages()->first('Telephone');
}
虽然更新查询我需要检查除给定id
之外的唯一规则我提到了这个http://laravel.com/docs/4.2/validation#rule-unique
但我没有回复$validator = Validator::make($data,$rule);
如何检查除自己的列
之外的唯一值答案 0 :(得分:1)
我相信您使用错误的语法进行唯一验证 它应该是
'Telephone' => 'unique:company_info,CompanyID,'.$companyid
或强>
'Telephone' => 'required|unique:company_info,CompanyID,'.$companyid
而非
'Telephone' => 'unique|unique:company_info,CompanyID,'.$companyid
答案 1 :(得分:1)
可以尝试这一点,因为Laravel Validation为我们提供了各种功能
$companyid = Input::get('CompanyID');
$Telephone = Input::get('Telephone');
$data = array('companyid'=>$companyid, 'Telephone'=>$Telephone );
//FOR INSERTING NEW DATA
$rule = array(
'Telephone' => 'required|unique:company_info,Telephone,{:id}'
);
$validator = Validator::make($data,$rule);
//FOR UPDATING AN EXISTING DATA
public static function rule ($id, $merge=[]) {
return array_merge(
[
'Telephone' => 'required|unique:company_info,Telephone,'.$id,
],
$merge);
}
$validator = Validator::make($data,self::rule($id));
评论错误......