這周工做上須要作一個管理後臺的指標統計小功能(從數據查詢到頁面實現)。因爲後臺使用的是Laravel框架,天然想經過orm模型來完成查詢。第一反應是經過循環語句分別統計天天的指標,最後彙總。但這樣作效率過低了,故放棄之。php
因爲對sql語句不是很熟悉(mysql函數這塊急需增強,據說mysql high performance 這本書不錯,能夠了解下),不知道有哪些函數能夠實現個人需求,因而在google上輸入本身想到的關鍵詞--「statistics everyday data laravel」來嘗試搜索相關信息,果真第一條搜索結果就是很好的例子(在這裏真心要讚歎下google的強大),原來實現這個需求要用到mysql中的date()函數,對照例子趕忙擼了一個出來。html
示例代碼前端
$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/9984166mysql
頁面上的統計圖表這塊使用了Echarts,這個是百度的一個前端團隊作的,很好很強大,基本各類圖表都能實現(雖然一直在抵觸百度的產品,可是對於開源技術仍是要持開放的態度,好東西值得表揚和讚美)。觀摩效果圖戳這裏http://echarts.baidu.com/examples.htmllaravel
既然要統計指標,確定得有個時間段,而老闆的需求又基本都是變態的,時間段選擇要能知足預先設置的(好比過去一週,過去一個月,過去30天,這個月,上個月,這個季度,上個季度等)和自定義的。以前使用的是datetimepicker(文檔在這裏http://xdsoft.net/jqplugins/datetimepicker/)這個插件,如今已經不能知足業務需求,本身寫是很難的,即便想寫,老闆也不會給這個時間的。因而再次求教於google,果真又找到一個能知足需求的插件daterangepicker(文檔在這裏http://www.daterangepicker.com/)。完成這個功能後把datetimepicker這個插件都替換爲daterangepicker,丫的實在跟不上時代的腳步。使用daterangepicker過程當中順便了解了Moment.js--js中一個封裝好的處理時間這塊的類庫,相似於php中的carbon。git
以上三個方面完成了,基本能實現一個簡單的指標統計模塊。github
開始寫博客,但願堅持下去。據說技術大牛都是從開始寫博客一路成長起來的:)sql