Laravel验证存在于NOT

maj*_*rif 16 php laravel eloquent

根据文件.存在可以有4个参数:

exists:table,id,where,0
Run Code Online (Sandbox Code Playgroud)

问题是,如果我希望它不在哪里,该怎么办?喜欢哪里不是0.

$validator = Validator::make(
    array(
        'groups' => $groups
    ),
    array(
        'groups' => 'required|exists:groups,jid,parent,!=,0'
    )
);
Run Code Online (Sandbox Code Playgroud)

Cas*_*oem 35

您可以使用 unique

'email' => 'unique:users,email_address,NULL,id,account_id,1'
Run Code Online (Sandbox Code Playgroud)

在上面的规则中,只有account_id为1的行才会包含在唯一检查中.

http://laravel.com/docs/4.2/validation#rule-unique

  • 除了可以与Laravel一起使用外,这基本上与接受的答案相同,并且还具有附加的好处,即可以abel定义忽略的id,这对更新特别有用。 (2认同)

Vla*_*sny 12

你可以使用这样的东西:

Validator::extend('not_exists', function($attribute, $value, $parameters)
{
    return DB::table($parameters[0])
        ->where($parameters[1], '=', $value)
        ->andWhere($parameters[2], '<>', $value)
        ->count()<1;
});
Run Code Online (Sandbox Code Playgroud)

  • 总的杀伤力如下 (2认同)

Tom*_*ler 5

使用Laravel 5.2或更高版本,您可以使用以下内容添加要检查的值!:

'groups' => 'required|exists:groups,jid,parent,!0'
Run Code Online (Sandbox Code Playgroud)

登录相同unique,只需要额外的参数:

'groups' => 'required|unique:groups,jid,NULL,id,parent,!0'
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 Laravel Degubar 包,您实际上可以检查每个请求中触发了哪些查询,以便您可以查看您的验证规则对数据库执行的操作。也就是说,存在规则在文档中有很好的介绍:`exists:(table name),(column name),[(column name of additional query), (value of additional query with optional !)]` (2认同)