gpt4 book ai didi

php - Laravel 5.2+ 日期前后日期验证不起作用

转载 作者:行者123 更新时间:2023-12-03 20:18:37 24 4
gpt4 key购买 nike

这有效

'expected_at' => 'date|after:"2016-04-09 10:48:11"',

这有效
$rules['expected_at'] = 'date|after:'.$opportunity->created_at;

这不起作用
'expected_at' => 'date|after:created_at',

数据库中的“created_at”值正好如下
2016-04-09 10:48:11

请注意,表单将按以下格式将 expected_at 日期传递给验证器
2016-04-09

我认为这意味着您不能直接引用验证器中的模型字段?

最佳答案

在 5.3 的 laravel 文档中(我测试的版本):

Instead of passing a date string to be evaluated by strtotime, you may specify another field to compare against the date:

'finish_date' => 'required|date|after:start_date'


https://laravel.com/docs/5.3/validation#rule-after
“after”规则后面的字符串(在本例中为 start_date)不是数据库字段,而是传递给验证器的输入字符串的一部分。
因此,按照您在上面尝试执行的操作,验证器期望一个名为“created_at”的字段与您提交的其余输入一起传递,这可能不存在,因为您的意图是让它从您的模型中读取,这会导致它失败。
长话短说,你最后的说法是正确的。 “before/after”规则不引用模型字段,而是引用传递给验证器的其他输入字段,或者可以由“strtotime”解释的日期字符串

关于php - Laravel 5.2+ 日期前后日期验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36514379/

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