0
編輯的淨度:精煉我的口才查詢(Laravel)
我需要一些方法爲這個查詢只查詢的
->wherein('course_id', $array)
一部分返回不同的course_ids。它可以獲得已完成課程的總數,但如果用戶已經完成課程的次數超過一次,則將其計入總數。所以如果你想知道有多少學生完成了一門課程,如果一個學生不止一次地完成了一門課程,這個數字將會被關閉。
public function report_count(){
$array = \Session::get('course_report')['course'];
return $this->hasOne('Tracking', 'roster_id')
->selectRaw('roster_id, count(*) as aggregate')
->where('status', 1)
->wherein('course_id', $array)
->groupBy('roster_id');
我試過在最後加入groupBy('course_id')但它不起作用。
這個統計信息可以在cronjob中生成嗎? –
這是一個內存問題嗎?超時問題?您可以將查詢分塊,或通過cron預處理它們。您是否使用調試欄來查看您的查詢是什麼樣的? – Blake
首先是內存問題。我提高了記憶力,現在我相信它超時了。我們已經有很多cronjob了,但我可以與高級開發人員覈對一下,看看他是否對這些預先運行有任何想法。我一直在使用debugbar,對花名冊的查詢很好,然後對每個關係吐出n + 1個查詢。我試圖加載查詢,但它只是將每個已完成課程的值更改爲0。 –