php – Laravel验证:存在附加列条件 – 自定义验证规则

在Laravel中指定存在的验证规则时,是否有一种引用另一个字段的方法?我希望能够说输入a必须存在于表a中,输入b必须存在于表b中,并且表b中列x的值必须等于输入a.

最好用例子解释:

public $rules = array(
    'game_id' => 'required|exists:games,id','team1_id' => 'required|exists:teams,id,game_id,<game_id input value here>','team2_id' => 'required|exists:teams,<game_id input value here>'
);

因此,根据我的验证规则,我希望能够确保:

> game_id存在于游戏表中(id字段)
> team1_id存在于teams表(id字段)中,game_id列(在teams表中)必须等于game_id输入的值.
>如上所述team2_id

因此,如果在我的表单中,我为game_id输入1,我希望能够确保team1_id和team2_id的teams表中的记录对于game_id具有值1.

我希望这是有道理的.

谢谢

你想要一个 custom validation rule,我会为此创建一个单独的类.但为简洁起见,使用内联闭包几乎相同:
// give it meaningful name,I'll go with game_fixture as an example
Validator::extend('game_fixture',function ($attribute,$value,$parameters,$validator) 
{
    if (count($parameters) < 4)
    {
        throw new \InvalidArgumentException("Validation rule game_fixture requires 4 parameters.");
    }

    $input    = $validator->getData();
    $verifier = $validator->getPresenceVerifier();

    $collection = $parameters[0];
    $column     = $parameters[1];
    $extra      = [$parameters[2] => array_get($input,$parameters[3])];

    $count = $verifier->getMultiCount($collection,$column,(array) $value,$extra);

    return $count >= 1;
});

然后使用这个:

$rules = array(
    'game_id' => 'required|exists:games,// last parameter here refers to the 'game_id' value passed to the validator
    'team1_id' => 'required|game_fixture:teams,game_id','team2_id' => 'required|game_fixture:teams,game_id'
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载
为什么laravel比yii火
一些常见的Laravel定时任务不运行的问题
laravel用路由有什么好处
composer无法安装laravel怎么办
laravel现在还用吗
laravel怎么替换主键id
laravel的appurl有什么用
如何修改Laravel的报错输出形式
laravel怎么避免foreach查表
laravel怎样操作数据库
laravel怎么截取字符串
laravel 是国内的吗
laravel怎么设置请求头
浅析Laravel社区Redis组件报错的问题和解决方法