使用 Laravel ORM 統計每天的指標


這周工作上需要做一個管理后台的指標統計小功能(從數據查詢到頁面實現)。由於后台使用的是Laravel框架,自然想通過orm模型來完成查詢。第一反應是通過循環語句分別統計每天的指標,最后匯總。但這樣做效率太低了,故放棄之。

由於對sql語句不是很熟悉(mysql函數這塊急需加強,聽說mysql high performance 這本書不錯,可以了解下),不知道有哪些函數可以實現我的需求,於是在google上輸入自己想到的關鍵詞--“statistics everyday data   laravel”來嘗試搜索相關信息,果然第一條搜索結果就是很好的例子(在這里真心要贊嘆下google的強大),原來實現這個需求要用到mysql中的date()函數,對照例子趕緊擼了一個出來。

示例代碼

$days = Input::get('days', 7);

$range = \Carbon\Carbon::now()->subDays($days);

$stats = User::where('created_at', '>=', $range)
    ->groupBy('date')
    ->orderBy('date', 'DESC')
    ->remember(1440)
    ->get([
        DB::raw('Date(created_at) as date'),
        DB::raw('COUNT(*) as value')
    ])
    ->toJSON();

參考例子在這里https://gist.github.com/msurguy/9984166

頁面上的統計圖表這塊使用了Echarts,這個是百度的一個前端團隊做的,很好很強大,基本各種圖表都能實現(雖然一直在抵觸百度的產品,但是對於開源技術還是要持開放的態度,好東西值得表揚和贊美)。觀摩效果圖戳這里http://echarts.baidu.com/examples.html

既然要統計指標,肯定得有個時間段,而老板的需求又基本都是變態的,時間段選擇要能滿足預先設置的(比如過去一周,過去一個月,過去30天,這個月,上個月,這個季度,上個季度等)和自定義的。之前使用的是datetimepicker(文檔在這里http://xdsoft.net/jqplugins/datetimepicker/)這個插件,現在已經不能滿足業務需求,自己寫是很難的,即使想寫,老板也不會給這個時間的。於是再次求教於google,果然又找到一個能滿足需求的插件daterangepicker(文檔在這里http://www.daterangepicker.com/)。完成這個功能后把datetimepicker這個插件都替換為daterangepicker,丫的實在跟不上時代的腳步。使用daterangepicker過程中順便了解了Moment.js--js中一個封裝好的處理時間這塊的類庫,類似於php中的carbon。

以上三個方面完成了,基本能實現一個簡單的指標統計模塊。

開始寫博客,希望堅持下去。聽說技術大牛都是從開始寫博客一路成長起來的:)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM