我有一个使用Laravel的Eloquent的查询,我需要一个where
子句,它将获取自当前时间戳以来最近8小时的数据。我可以在原始查询中很容易地做到这一点,比如:
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
和一个简单的引号(注释行),但不起作用,也没有得到任何数据。我正在使用MySQL。
DB::raw
有一个参数,所以尝试whereRaw
如下:
->whereRaw('tasks.created_at = DATE_ADD(NOW(), INTERVAL -8 HOUR')