2016-03-12 2 views
-1

Я использовал PDO для получения предметов с последней недели или месяца, как показано в приведенном ниже коде. Теперь я конвертирую этот код в Laravel. Итак, я хочу знать, есть ли способ Яркого реализовать следующий запрос:Как получить последние месячные предметы через Eloquent

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; 
} 

ответ

2

Использование углерода. Это позволяет вам создавать даты так легко, как Carbon :: today() -> subWeeks (1) или Carbon :: today() -> subMonths (1).

+0

вот что я был нужен ..thank вы –

2

Вы можете сделать это таким образом

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

Очень хороший ответ. Фактически существует метод ['whereMonth'] (https://laravel.com/api/5.2/Illuminate/Database/Query/Builder.html#method_whereMonth), который делает то же самое, но без необходимости использовать' DB :: raw'. Вы можете включить это в свой ответ. – Bogdan

+0

на самом деле он вернет текущий месяц или некоторые конкретные месячные позиции не в последний месяц (/ последние 30 дней), в то время как мне нужно вернуть последний месяц или 30 дней. –

Смежные вопросы