gpt4 book ai didi

laravel - 自定义验证规则使用列名称和过滤器检查是否存在

转载 作者:行者123 更新时间:2023-12-02 20:41:51 25 4
gpt4 key购买 nike

我想验证用户是否在地址表单中选择了有效的状态值。为了简化开发过程,我还没有让他们选择国家/地区。

状态信息位于包含以下字段的表中:

id
country_id
abbreviation
name

该表单使用名为 address[state] 的选择元素,并将州 ID 作为所选值发送。

我第一次尝试验证规则是:

'address.state' => [
'required',
Rule::exists('shop_address_states')->where(function ($query) {
$query->where('country_id', 1);
}),
],

但我收到未知列'address.state'错误。

当我尝试让它使用 ID 列时:

'address.state' => [
'required',
Rule::exists('shop_address_states,id')->where(function ($query) {
$query->where('country_id', 1);
}),
],

我收到 undefined offset :1错误。

我想我有点混搭 https://laravel.com/docs/5.4/validation#rule-exists 中的规则 'state' => 'exists:states,abbreviation'因为我在其他地方找不到例子。

如何让该规则发挥作用?

最佳答案

如果您没有明确声明列名,Laravel 将采用数据索引中的列名。在本例中为address.state

当您尝试添加列名称时,您不会将其作为第二个参数本身传递。请尝试以下操作:

Rule::exists('shop_address_states', 'id')->where(function ($query) {
$query->where('country_id', 1);
});

关于laravel - 自定义验证规则使用列名称和过滤器检查是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45893267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com