2016-04-28 2 views
1

У меня есть запрос с использованием Larvel's Eloquent, и мне нужно предложение where, которое будет получать данные за последние 8 часов с момента создания текущей метки времени. Я могу легко сделать это в необработанном запросе типа:Получить данные за последние 8 часов в столбце datetime. Eloquent

SELECT * FROM task_tracker.tasks WHERE created_at > DATE_ADD(NOW(), INTERVAL -8 HOUR); 

Но как это сделать в красноречивом формате? Формат tasks.created_at - это формат даты и времени. У меня это в настоящее время:

$tasks = Task::join('users', 'tasks.added_by', '=', 'users.id') 
     ->join('users AS x', 'x.id', '=', 'tasks.assigned_to') 
     ->select([ 
      'tasks.id', 
      'tasks.task_description', 
      'tasks.start_timestamp', 
      'tasks.end_timestamp', 
      'tasks.status', 
      'users.name', 
      'x.name AS assign', 
      'tasks.created_at' 
     // ])->where('tasks.created_at', '>', 'DATE_ADD(NOW(), INTERVAL -8 HOUR)'); 
      ])->where(DB::raw('tasks.created_at', '=', 'DATE_ADD(NOW(), INTERVAL -8 HOUR)')); 

     dd($tasks); 

Я попытался с помощью DB::raw и простой encloure в одинарные кавычки (комментируемого линия), но не работает и не получает никаких данных. Я использую MySQL.

ответ

1

DB::raw имеет один параметр, поэтому постарайтесь whereRaw так:

->whereRaw('tasks.created_at = DATE_ADD(NOW(), INTERVAL -8 HOUR)

Смежные вопросы