Laravel 5 уникальная (база данных) проверка с другим форматом даты - PullRequest
0 голосов
/ 27 октября 2018

Я использую laravel 5.5 с базой данных MySQL.

Вот мой текущий код:

private function setValidationRule(Request $request,$actionCode) {
    $rules = [];
    $rules['odaydate'] = 'required|unique:empofday|date_format:"d-m-Y"';
    return $rules;
}

public function postCreate(Request $request) {
    //Previous code...

    $validator = \Validator::make($request->all(),
        $this->setValidationRule($request,$actionCode),
        $this->setCustomValidationRuleMsg($request,$actionCode)
    );
    $validator->setAttributeNames($this->setValidationAttributeNames());
    if ($validator->fails()) {
        $view = $viewPri->withErrors($validator)->withInput();
    } else {
        $view = $viewSec;
    }
    return $view;
}

Данные проводки от клиента: DD-MM-YYYY = '15 -10-2018 '.

Тогда я хочу проверить уникальность даты с помощью правила:
$rules['odaydate'] = 'required|unique:empofday|date_format:"d-m-Y"';

Да, проверка верна (успех), но sql, сгенерированный laravel, был неверным, чтобы получить уникальность:
select count(*) as aggregate from empofday where odaydate = '15-10-2018'
поэтому результирующий sql будет 0 вместо 1.

Но если я попробую вручную sql со следующим кодом:
select count(*) as aggregate from empofday where odaydate = '2018-10-01'
результирующее значение 1.

Итак, мой вопрос: как установить формат даты для проверки уникальности в базе данных на уровне , используя формат d-m-Y вместо Y-m-d ?

Спасибо за помощь.

1 Ответ

0 голосов
/ 27 октября 2018

Если вы используете простое текстовое поле для ввода даты, я рекомендую заменить его на какой-либо плагин для выбора даты, чтобы плагины действительно имели формат даты, который отображается не так, как отправляется обратно в базу данных.

После этого вы можете удалить проверку формата даты, потому что он будет управляться плагином, и будет работать уникальный, потому что формат, отправляемый плагином, может быть установлен в формате MySQL (YYYY-MM-DD)

Для jQuery UI Выбор даты http://api.jqueryui.com/datepicker/#option-altFormat

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