Я хочу проверить, что в перекрывающихся датах в laravel нет повторяющейся строки. У меня есть 2 столбца в базе данных с типом данных DATE, valid_from_date
и valid_until_date
.
Предположим, valid_from_date = 2019-01-01 и valid_until_date = 2019-01-31, я не хочу, чтобы пользователь вводил какие-либо даты между этими днями.
Неверные примеры: не должны приниматься
valid_from_date = 2018-12-01 and valid_until_date = 2019-01-02
valid_from_date = 2019-01-04 and valid_until_date = 2019-01-29
valid_from_date = 2019-01-15 and valid_until_date = 2019-02-05
Примеры действительных случаев: Может быть принят
valid_from_date = 2018-12-02 and valid_until_date = 2018-12-31
valid_from_date = 2019-02-05 and valid_until_date = 2019-02-25
Точно, любая дата ввода, которая находится между этими двумя датами, не должна приниматься как valid_from_date
или valid_until_date
.
Я попытался сделать это с Rule :: unique следующим образом, также пробовал много других способов запроса.
Rule::unique('users')->where(function ($query) use ($request) {
return $query->where('user_id', $request->user_id)
->where(function($q1) use ($request) {
$q1->where(function($q2) use ($request) {
$q2->where('valid_from_date', '<=', $request->valid_from_date)
->where('valid_until_date', '>=', $request->valid_from_date);
})
->orWhere(function($q2) use ($request) {
$q2->where('valid_from_date', '<=', $request->valid_until_date)
->where('valid_until_date', '>=', $request->valid_until_date);
});
});
})
Заранее спасибо за ваше время и помощь.