Php 如何通过Eloquent获得上个月的物品

Php 如何通过Eloquent获得上个月的物品,php,laravel,laravel-4,laravel-5,eloquent,Php,Laravel,Laravel 4,Laravel 5,Eloquent,我使用PDO获取上一周或一个月的项目,如下面的代码所示。现在我正在将代码转换为Laravel。因此,我想知道是否有雄辩的方法来实现以下查询: public function trendingAlbums($category=null,$order='views',$from=0,$limit=20,$term=null) { $cond = isset($category) ? "AND category_id IN ($category)" : ''; if($term ==

我使用PDO获取上一周或一个月的项目,如下面的代码所示。现在我正在将代码转换为Laravel。因此,我想知道是否有雄辩的方法来实现以下查询:

public function trendingAlbums($category=null,$order='views',$from=0,$limit=20,$term=null) {
    $cond = isset($category) ? "AND category_id IN ($category)" : '';
    if($term == 'month') {
        $cond .= "AND created_at BETWEEN DATE_SUB(CURRENT_DATE() ,INTERVAL 1 MONTH) AND CURRENT_DATE()";
    } elseif ($term =='week') {
        $cond .= "AND created_at BETWEEN DATE_SUB(CURRENT_DATE() ,INTERVAL 7 DAY) AND CURRENT_DATE()";
    }

    $sql = "SELECT * FROM view_albums WHERE 1 $cond ORDER BY $order DESC LIMIT :from, $limit";
    try {
        $q = $this->con->prepare($sql);
        isset($category) ? $q->bindValue(':category',$category,PDO::PARAM_STR) : '';
        $q->bindvalue(':from',$from,PDO::PARAM_INT);
        $q->execute();
    } catch (PDOException $ex) {
        return $this->errorhandler($ex->getmessage()); // displaying/hanlding actual error message
        //return $ex->getMessage();
    }
    $r= $q->fetchAll(PDO::FETCH_OBJ);
    return $r;
}

使用碳。它允许您轻松创建日期,如Carbon::today()->子周(1)或Carbon::today()->子月(1)。

您可以这样做

$items = Item::where( DB::raw('MONTH(created_at)'), '=', date('n') )->get();

回答得很好。实际上有一种方法可以做完全相同的事情,但不需要使用
DB::raw
。您可能希望将其包含在您的答案中。实际上,它将返回当月或某些特定月份的项目,而不是上个月(/last 30 day)的项目,而我需要返回上个月或30天的项目。。