首页 > 解决方案 > Laravel 多值验证需要一个

问题描述

我的表中有 3 列;admin_id、server_id 和 client_id。只有一个是必需的。例如,如果我发送 admin_id,则不需要 server_id 和 client_id。或者,如果我发送 server_id,则不需要 client_id 和 admin_id。但我不能将它们全部发送空。我也不能同时发送 client_id 和 admin_id 或其他可能性。我只需要发送其中一个。

我该如何验证?

$rules = [
    'admin_id'    => 'required|exists:admins,id',
    'server_id '  => 'required|exists:servers,id',
    'client_id '  => 'required|exists:clients,id'
];

如果我喜欢这个,我必须把它们都寄出去。但我只想 1 必需。

我想检查;

如果 admin_id 和 server_id 为空;client_id 是必需的。

如果 client_id 和 server_id 为空;admin_id 是必需的。

如果 admin_id 和 client_id 为空;server_id 是必需的。

标签: phplaravelvalidation

解决方案


您可能需要required_without_all 验证

$rules = [
    'admin_id'    => 'required_without_all:server_id,client_id|exists:admins,id',
    'server_id '  => 'required_without_all:admin_id,client_id|exists:servers,id',
    'client_id '  => 'required_without_all:server_id,admin_id|exists:clients,id'
];

required_without_all:foo,bar,...

仅当所有其他指定字段都不存在时,验证中的字段必须存在且不为空。


推荐阅读