Laravel ORM获取日期之间的记录?

时间:2014-11-16 15:35:53

标签: php laravel eloquent

我有任务表以及日期列'提醒日期'到期日期'。我需要在今天引用之前完成所有任务。我对查询知之甚少,所以ORM会更好。

我试过了,

$today = date("Y-m-d");
$availTasks = Task::whereRaw($today.' between rem_date and due_date')->get();
echo ($availTasks);

2 个答案:

答案 0 :(得分:3)

首先,要正确使用日期字符串,应该是:

$availTasks = Task::whereRaw('? between rem_date and due_date', [$today])->get();

如果您的rem_datedue_date列为DATE类型,则应该有效。但是,如果它们是DATETIME类型,它将无效。你应该使用:

$availTasks = Task::whereRaw('? between DATE(rem_date) and DATE(due_date)', [$today])->get();

答案 1 :(得分:2)

使用闭包的化合物怎么样:

$dateToday = date('Y-m-d H:i:s');

$query = Task::where(function ($query) use ($dateToday){
    $query->where('rem_date', '>=', $dateToday);
    $query->where('due_date', '<', $dateToday);
});
echo $query->get();

同样在使用whereRaw时,您应始终绑定参数,因为它可以成为注射矢量。我知道参数只是你的情况下的日期,但这只是一个很好的做法。见先生。 Nabiałek回答这个问题。