感謝lukasgeiter answer我的想法爲此創建一個類,它擴展了DB
並返回可以建立的查詢的開始:
class PageViewQueryBuilder extends DB {
public static function table()
{
$query = parent::table('page_views')
->where('agent', 'NOT LIKE', '%bot%')
->where('agent', 'NOT LIKE', '%spider%')
->where('agent', 'NOT LIKE', '%crawler%')
;
return $query;
}
}
我現在可以用這個來創建一些不同的查詢,所有的條件都一樣。
特定頁面獲取查看次數:
$count = PageViewQueryBuilder::table()
->where('page_id', $id)
->count(DB::raw('distinct session, DATE(created_at)'));
獲取特定頁面的所有訪問量:
$views = PageViewQueryBuilder::table()
->where('page_id', $id)
->orderBy('created_at', 'DESC')
->groupBy('session', DB::raw('DATE(created_at)'))
->get();
獲得10個最熱門的網頁在過去三個月:
$views = PageViewQueryBuilder::table()
->selectRaw('page_id as page_id, count(distinct session, DATE(created_at)) as page_views')
->whereRaw('created_at BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()')
->groupBy('page_id')
->orderBy('page_views', 'desc')
->limit(10)
->get();
好的提示,這給了我創建一個'PageViewQueryBuilder'類的想法,它擴展了'DB'並且有它自己的'table'函數:'$ que ry = parent :: table('page_views') - > where('user',null)'等等,等等。 – 2015-02-09 23:36:23
太棒了!讓我知道如果你需要任何幫助:) – lukasgeiter 2015-02-09 23:41:10
我實現了這個[解決方案](http://stackoverflow.com/a/28429629/3903565)。感謝給我的想法:) – 2015-02-10 10:44:29