Как проверить массив дат, которые должны быть внутри двух других дат относительно модели в Laravel 51

Я использую boostrap-datepicker с активированной опцией «несколько дат». Мой dates выглядит так: [date1, date2, ...].

Я также использую скрытый ввод для получения «id». Этот «id» помогает мне получить «дату начала» и «дату окончания» внутри моей модели.

Поэтому я ищу правило проверки, которое может сказать мне, действительны ли мои даты и находятся ли они внутри двух других дат, которые соответствуют «идентификатору» моей модели.

На данный момент мои правила id и dates выглядят так:

$rules = [
    'id' => 'required|numeric|exists:event,id,isactive,1',
    'dates' => 'array'
]

person Hayanno    schedule 23.11.2015    source источник


Ответы (1)


Вы можете сделать это очень просто, как это

Вот документация по написанию правил для before и после

protected $rules = array(
    'afterdate' => 'after:'.$yourDateForm,
    'beforedate' => 'before:'.$yourDateTo 
);

Примечание:

Вы также должны продлить проверку даты, как это

'start_date' => 'required|date|after:tomorrow'
'finish_date' => 'required|date|after:start_date'

Обновление:

Поскольку ОП хочет получить дату из БД,

Вы должны сделать так

$yourStartDate = Call to get Start Date from Table;
$yourEndDate = Call to get End Date from Table;

и правило должно быть

$validator = Validator::make(
    array('date' => $yourStartDate),
    array('date' => 'after:'.$yourEndDate)
);
person Sulthan Allaudeen    schedule 23.11.2015
comment
Моя проблема немного сложнее, возможно, я недостаточно ясно выразился. Мне нужно получить доступ к start_date и end_date из модели, которую я получаю с идентификатором также внутри моего запроса. Кроме того, я должен проверять каждую дату внутри моего атрибута даты. - person Hayanno; 23.11.2015
comment
Хорошо, почему бы вам не передать значение из базы данных, а затем передать дату начала и окончания правилу проверки? - person Sulthan Allaudeen; 23.11.2015
comment
Поскольку я не знаю, как это сделать, не могли бы вы мне подсказать? - person Hayanno; 23.11.2015
comment
Конечно, вы хотите получить дату соответствующего столбца, который вы получаете в качестве входных данных? - person Sulthan Allaudeen; 23.11.2015
comment
Точно, что-то вроде этого: $event = Event::whereId(id), теперь я хочу $event-›enddate и $event-›begindate. Но я не знаю, как сказать это правилам Laravel. - person Hayanno; 23.11.2015
comment
Круто, обновлю ответ через несколько минут, был в поездке;) - person Sulthan Allaudeen; 23.11.2015
comment
@Hayanno Обновил ответ. Вы должны объявить правило внутри контроллера;) - person Sulthan Allaudeen; 23.11.2015
comment
Моя проблема в том, что в $yourStartDate = Call для получения даты начала из таблицы; Мне нужно выбрать запись с идентификатором, который я получаю из своей формы. И я не знаю, как использовать этот идентификатор, потому что он в настоящее время не проверен, поэтому это может вызвать проблемы с безопасностью. - person Hayanno; 23.11.2015
comment
Я решил свою проблему, используя двойной валидатор, один только для моего идентификатора, а затем для всех остальных атрибутов, надеюсь, это хорошая практика безопасности. - person Hayanno; 23.11.2015