加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 19:50:01 所属栏目:大数据 来源:网络整理
导读:在Laravel中指定存在的验证规则时,是否有一种引用另一个字段的方法?我希望能够说输入a必须存在于表a中,输入b必须存在于表b中,并且表b中列x的值必须等于输入a. 最好用例子解释: public $rules = array( 'game_id' = 'required|exists:games,id','team1_id'
在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'
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读