从Laravel中的数据库获取特定日期范围

时间:2017-03-08 13:57:24

标签: php laravel eloquent

我需要从数据库中得到结果除以今天,昨天,本周,上周等日期。

我可以使用whereRaw和一些SQL轻松完成此操作:

whereRaw('Date(created_at) = CURDATE()')->get();

我想知道是否有一种更容易,更恰当的方法来与Eloquent一起做。

1 个答案:

答案 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的有序项目列表。