Laravel 5.4查询检查数组的键/值之间是否存在值

时间:2017-06-05 01:05:22

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

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

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

所以我做了一个查询来检索当前Lessons的所有User(作为键(start_at)& value(end_at)的数组),其中date =所选表格中的日期。

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

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

提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

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
}