浏览Laravel文档,API文档和源代码,我想知道是否有人知道以下唯一规则中的第4个参数id
是做什么的?
'email' => 'unique:users,email_address,NULL,id,account_id,1'
我目前对这条规则的理解是:
-
users
- 查看此表 -
email_address
- 检查此列 -
NULL
- 我们可以指定要忽略的主键/ID 值,但我们没有打扰,所以这个参数基本上被忽略
了 -
id
- 不确定 -
account_id
- 附加 where 子句,这是列名 -
1
- where 子句中account_id
的值
文档:http://laravel.com/docs/4.2/validation
负责执行在线949
函数validateUnique($attribute, $value, $parameters)
'Illuminate'Validation'Validator
中发现的唯一规则验证的函数:
/**
* Validate the uniqueness of an attribute value on a given database table.
*
* If a database column is not specified, the attribute will be used.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateUnique($attribute, $value, $parameters)
{
$this->requireParameterCount(1, $parameters, 'unique');
$table = $parameters[0];
// The second parameter position holds the name of the column that needs to
// be verified as unique. If this parameter isn't specified we will just
// assume that this column to be verified shares the attribute's name.
$column = isset($parameters[1]) ? $parameters[1] : $attribute;
list($idColumn, $id) = array(null, null);
if (isset($parameters[2]))
{
list($idColumn, $id) = $this->getUniqueIds($parameters);
if (strtolower($id) == 'null') $id = null;
}
// The presence verifier is responsible for counting rows within this store
// mechanism which might be a relational database or any other permanent
// data store like Redis, etc. We will use it to determine uniqueness.
$verifier = $this->getPresenceVerifier();
$extra = $this->getUniqueExtra($parameters);
return $verifier->getCount(
$table, $column, $value, $id, $idColumn, $extra
) == 0;
}
干杯
啊,坚果,我想一分钱刚刚掉下来。
如果我错了,请纠正我,但第 4 个参数与第 3 个参数相关,因为它允许我们在忽略 3 中指定的 ID 时指定要检查的列。如果不是id
.
例如,如果主键未id
而是user_id
,我们可以这样做:
'email' => 'unique:users,email_address,NULL,user_id,account_id,1'
- $ARG 1 - 查看此表
- $ARG 2 - 对照此列进行检查。默认为验证密钥(等式:电子邮件)
- $ARG 3 - 附加值。
- $ARG 4 - 附加位置 NOT 字段。默认为主键 $ARG 5 - 附加位置
- 字段 1 - 附加位置值。
你是对的,第 4 个参数是 id 的列名,如果与"id"不同,如下所示:
https://github.com/laravel/framework/blob/4.2/src/Illuminate/Validation/Validator.php#L991