выдает при проверке сразу два столбца - PullRequest
1 голос
/ 28 марта 2019

У меня проблема с проверкой по двум столбцам в laravel

У меня есть таблица work_hours с user_id, датой и часами, и у меня более одного пользователя, поэтому мне нужно датьПользователь может добавить свои часы, но только один раз для определенной даты, например

Добавить 8 часов 28-03-2018 для user_id = 9, но только один раз, так что если пользователь попытается добавить еще раз, Добавить 8 часов 28-03-2018 для user_id = 9 У него есть информация, которую эта дата уже заняла.

Я написал подтверждение:

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

но это работает, если кто-то из пользователей добавит 8 часов на 28-03-2018 для user_id = 9, user_id=10 или другого не может добавить часы в эту же дату.

Итак, мне нужна проверка для двух столбцов одновременно, user_id и даты, но я незнаю, как это сделать.

1 Ответ

1 голос
/ 28 марта 2019

Это звучит как хороший случай для замыканий.

$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',
    ]);

Вы можете ознакомиться с документацией здесь: https://laravel.com/docs/5.8/validation#using-closures

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...