Laravel 5: Query Builder: получить запись, используя дату в типе datetime - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть столбец date, а тип данных - datetime, теперь я хочу получить всю связанную дату с определенной датой.

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

Пример

Моя дата:

$date['start_date'] = "2019-01-01";
$date['end_date']   = "2019-12-31";

У меня есть 3 записи

1) 
   name: Laptop
   date(date bought): 2018-03-05 14:23:00
2) 
   name: Shoes
   date(date bought): 2019-03-05 23:05:00
3) 
   name: Bag
   date(date bought): 2019-10-05 18:35:00

Модель

return DB::table('x')
      ->whereBetween('date', [date('Y-m-d', strtotime($date['start_date'])), date('Y-m-d', strtotime($date['end_date']))])
->get()->toArray();

Вопрос: мой запрос неверен?

1 Ответ

0 голосов
/ 01 февраля 2020

Вы можете использовать like, как и в обычном SQL, и обрабатывать поле даты и времени так же, как текстовое поле

 return DB::table('x')->where('date', 'like', "2019-%")->get()->toArray();

или даже лучше с вашей моделью

 return YourModelX::where('date', 'like', "2019-%")->get()->toArray();

или вы используете whereBetween с форматом ваших ячеек в базе данных:

// datetime
return YourModelX::whereBetween('date', ['2019-01-01 00:00:00','2019-12-31 23:59:59'])->get();
// date
return YourModelX::whereBetween('date', ['2019-01-01','2019-12-31'])->get();
...