unique 求助
'email' => 'unique:users,email_address,NULL,id,account_id,1'我要验证servers表里address+port的唯一性,我的代码是这样的:
$port = Input::has('port') ? Input::get('port') : 80;
$address = Input::get('address');
$rules = array(
'address' => 'unique:servers,address,NULL,id,port,' . $port
);
$validator_address = Validator::make($address, $rules);
反正结果是没验证成功,我加了好几条相同的记录
1 个回复
Mr_Jing
赞同来自: __________ 、FiveSay
我是以username + email为例子试验的。
你可以输出SQL日志看看
// 数据库里有一条数据:INSERT INTO `app_test`.`users` (`id`, `username`, `email`, `created_at`, `updated_at`) VALUES ('1', 'a', 'a@qq.com', '0000-00-00 00:00:00', '0000-00-00 00:00:00');
$username = 'a';
$input = array(
'email' => 'a@qq.com',
);
$rules = array(
'email' => 'unique:users,email,NULL,id,username,' . $username,
);
$validator = Validator::make($input, $rules);
var_dump($validator->fails(), $validator->messages(), DB::getQueryLog());
输出:
bool(true)
object(Illuminate\Support\MessageBag)#151 (2) {
["messages":protected]=>
array(1) {
["email"]=>
array(1) {
[0]=>
string(33) "The email has already been taken."
}
}
["format":protected]=>
string(8) ":message"
}
array(1) {
[0]=>
array(3) {
["query"]=>
string(78) "select count(*) as aggregate from `users` where `email` = ? and `username` = ?"
["bindings"]=>
array(2) {
[0]=>
string(8) "a@qq.com"
[1]=>
string(1) "a"
}
["time"]=>
float(0)
}
}