Laravel изменить формат даты в предложении where для соответствия Carbon :: now ()

Мне нужно выбрать записи на основе дат, происходящих в будущем, и
Записи содержат формат даты:

12/30/17

Я пытаюсь отформатировать дату и сравнить с отметкой времени Carbon :: now (), но безуспешно.

$now = \Carbon\Carbon::now();

$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(DATE_FORMAT(booking.date,'%Y-%m-%d 00:00:00'))"), ">=", $now)
->get();

2

Решение

Вам нужно будет использовать STR_TO_DATE преобразовать строку.

$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(STR_TO_DATE(booking.date,'%m/%d/%y'))"), ">=", $now)
->get();

STR_TO_DATE будет конвертировать 12/30/17 в 2017-12-30

4

Другие решения

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

Booking::where('uid', auth()->id())->where('date', '>=', now())->get();

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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector