首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果另一个字段为0,则字段应为1,反之亦然。

如果另一个字段为0,则字段应为1,反之亦然。
EN

Stack Overflow用户
提问于 2019-09-06 09:10:08
回答 2查看 329关注 0票数 0

假设,我有一个请求对象,它发送

代码语言:javascript
复制
[
 a => 0,
 b => 0
]

我想要一个验证,这将导致一个错误,因为a和b都是0。我至少需要一岁。我怎么能做到呢?另一项工作如:

代码语言:javascript
复制
[
 a => 0,
 b => 1
]

它应该过去

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-06 09:32:34

对于这种过于特殊的情况,您可以使用自定义规则。

代码语言:javascript
复制
$request->validate([
    'a' => [
        'integer',
        'between:0,1',
        function ($attribute, $value, $fail) use ($request) {
            if (!$value && !$request->b) {
                $fail($attribute.' is invalid.'); //you can customize the message here
            }
        }
    ],
    'b' => 'integer|between:0,1'
]);

规则只能在一条上,因此用户不会收到2条错误消息。

票数 3
EN

Stack Overflow用户

发布于 2019-09-06 09:26:47

有一个叫做“不同”的验证规则。

假设你可以这样用它

代码语言:javascript
复制
$request->validate([
   'a' => 'different:b',
   'b' => 'different:a'
]);

您可以将它们与整数组合起来,并在规则之间进行组合:

代码语言:javascript
复制
$request->validate([
   'a' => 'integer|between:0,1|different:b',
   'b' => 'integer|between:0,1|different:a'
]);

我还没有试过这个,但是您可以在文档中看到它:https://laravel.com/docs/5.8/validation#rule-different

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57819010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档