一次验证两列的问题

时间:2019-03-28 09:11:51

标签: laravel validation eloquent

我在laravel中的两列验证方面遇到问题

我有一个表{strong> work_hours ,其中有user_id以及日期和小时,并且我有多个用户,因此我需要给用户机会添加他的小时数,但在特定日期只能添加一次例子

user_id = 9上于2018年3月28日添加8小时,但仅一次,如果用户尝试再次添加,则在user_id = 9上于2018年3月28日添加8小时,他具有该日期的信息已经采取了。

我写了验证:

$validator = Validator::make($request->all(), [
            'date' => 'unique:work_hours',
            'name_of_hours' => 'required',
        ]);

但是这项工作是,如果某位用户在2018年3月28日为user_id = 9user_id=10或其他用户添加了8小时,则无法在同一日期添加时间。

因此,我需要同时验证两列user_id和日期,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

这听起来像是关闭的好例子。

$validator = Validator::make($request->all(), [
        'date' => function ($attribute, $value, $fail) {
            // check the table for the date and current user
            $date = DB::table('work_hours')->where([
                ['date', $value],
                ['user_id', Auth::user()->id]
            ])->first();
            // if it exists then you fail
            if ($date) $fail($attribute.' is invalid.');
        },
        'name_of_hours' => 'required',
    ]);

您可以在此处查看文档:{​​{3}}