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字段) 因此,如果在我的表单中,我为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' ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |