【问题标题】:How to prevent and validate between 4 date period, 2 start date and 2 end date如何预防和验证 4 个日期期间、2 个开始日期和 2 个结束日期
【发布时间】:2019-03-12 18:03:10
【问题描述】:

我正在使用 Laravel 5.7 来验证 4 个日期时间以检查 2 个期间 (每个用户都有自己的期间)

当第一个时段保存有开始和结束日期时,下一个输入只能保存结束日期之后的输入

例如:

已保存的第一期:2019 年 2 月 1 日 - 2019 年 5 月 30 日 然后在下一个输入期间(新的开始和结束日期)仅在 2019 年 5 月 30 日之后。 当此用户保存下一个时间段时,例如 Mar/04/2019 - Jun/20/2019 被拒绝,以及 Mar/01/2019 - Apr/20/2019 被拒绝。

当第二个周期被保存时:Jun/05/2019 - Aug/05/2019 然后在下一个输入期间(新的开始和结束日期)仅在 2019 年 8 月 5 日之后。 等等。

对于有各自时期的其他用户也是如此。

谢谢。

【问题讨论】:

  • 如果是我,我会暂时忘记 Laravel,专注于 SQL。
  • 谢谢。但它是如何工作的?是在迁移吗?
  • 我不理解该评论的任何部分。

标签: php mysql laravel


【解决方案1】:

我假设您的 User 具有 startend 属性,并且他们正在提交具有新 startend 值的表单。

您需要编写一个规则来验证输入 start 是否在用户的 end 之后,您可以使用 after rule 执行此操作,方法是将其传递给用户的 end,例如:

$this->validate($request, [
    'start' => 'required|after:' . Auth::user()->end,
]);

如果您在同一表单提交中接受多个日期,则可以传递包含要比较的日期的字段名称,而不是传递文档中包含的日期。除了after,还有一个before 规则以同样的方式工作。

【讨论】:

  • 很好,它有效!但在我的情况下,开始和结束日期位于不同的模型中,就像这样。 $find_endDate = 提交::find(auth()->user()->lastSubmissionID); $validatedData = $request->validate([ 'startDate' => 'required|before:endDate|after:'.$find_endDate->ends, 'endDate' => 'required', ]);谢谢,你拯救了我的一天。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 2015-06-29
  • 2015-09-29
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
相关资源
最近更新 更多