我需要从数据库中得到结果除以今天,昨天,本周,上周等日期。
我可以使用whereRaw和一些SQL轻松完成此操作:
whereRaw('Date(created_at) = CURDATE()')->get();
我想知道是否有一种更容易,更恰当的方法来与Eloquent一起做。
答案 0 :(得分:1)
您可以为此特定类创建范围:
public function scopeYourQuery($query, $user) {
return $query->where('user_id', $user->id)->orderBy('created_at', 'desc')->first();
}
这只是获取按每个用户的created_at日期排序的降序排序列表的第一项。
如果你想要日期范围之间的东西?你只需传递你的约会并用一些PHP扩展它,也许这样的东西可以工作:
public function scopeSomeDateQuery($query, $fetch_date, $user)
{
//clone the users chosen month - so we can make the range until the following month
$also_fetch_date = clone $fetch_date;
$next_month = $also_fetch_date->addMonth();
$next_month = $next_month->format('Y-m-d');
$fetch_date = $fetch_date->format('Y-m-d');
//return the query for the monthname
return $query->orderBy('created_date')->where('created_date', '>=', $fetch_date)->where('created_date', '<', $next_month)->where('user_id', $user->id);
}
这将在每月范围内(每个用户)查看具有该范围内created_date的有序项目列表。