检查除自己的列以外的唯一列

时间:2014-12-04 13:09:20

标签: php validation laravel laravel-4

这是我的规则:

表名是: 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);

如何检查除自己的列

之外的唯一值

2 个答案:

答案 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));

评论错误......