【问题标题】:Laravel 5.4 query check if value exists between the keys/values of an arrayLaravel 5.4查询检查数组的键/值之间是否存在值
【发布时间】:2017-11-05 17:18:45
【问题描述】:

我正在使用 Laravel 5.4,这是我的用例:

我有一个Lessons 列表,每个Lesson 都与一个特定的User 相关联,并且有一个datestar_atend_at 字段。在允许我添加/编辑Lessons 的表单中,我需要进行验证检查(我们选择日期、开始和结束 形式): - 在选定的date 期间,新的Lesson 不应在另一个课程的时间范围内(start_at -> end_at)。

所以我进行了查询以检索当前User 的所有Lessons(作为 key(start_at) 和 value(end_at) 的数组),其中date = 表单中的选定日期。

现在我需要检查我们在表单中选择的start_at 值是否存在于任何检索到的Lessons 数组记录的时间范围内。然后可能会显示错误(在这个日期的这个时间范围内已经有一个教训)。

请帮忙,可能有点不清楚,但如果您需要,我可以进一步解释。

提前谢谢你。

【问题讨论】:

  • 当您添加新课程时,它不应该在该特定用户的其他课程范围内吗?我说的对吗?
  • 你能发布你的控制器代码吗?

标签: php mysql laravel laravel-5.4 laravel-query-builder


【解决方案1】:

根据我对问题的理解,下面的代码应该可以解决问题。根据您的应用更改模型和字段名称。

protected function store()
{
    $input = request()->all();

    $lessons = Lesson::whereDate('date', Carbon::parse($input['date']))
        ->where('start_at', '>=', Carbon::parse($input['start_at']))
        ->where('end_at', '<=', Carbon::parse($input['start_at']))
        ->count();

    if ($lessons) {
        // lesson in exists on this date in the given time frame.
        // handle error
    }

    Lesson::create($input);

    // handle success
}

【讨论】:

  • 谢谢,原来如此。
猜你喜欢
  • 2020-08-03
  • 2018-04-22
  • 1970-01-01
  • 2016-05-10
  • 2018-10-08
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多