2016-06-15 114 views
1

使用計數,以我想用計數爲了和我用以下2種方式如何通過laravel5.2

首先

DB::table('user_skill') 
     ->join('skill_category', 'user_skill.skill_category_id', '=', 'skill_category.skill_category_id')    
     ->select(DB::raw('user_skill.skill_category_id', 'skill_category.skill_name','count(user_skill.skill_category_id) as totalIds')) 
     ->orderBy('totalIds','desc') 
     ->groupBy('user_skill.skill_category_id') 
     ->get(); 

DB::table('user_skill') 
     ->join('skill_category', 'user_skill.skill_category_id', '=', 'skill_category.skill_category_id')    
     ->select(DB::raw('user_skill.skill_category_id', 'skill_category.skill_name')) 
     ->orderBy('count(user_skill.skill_category_id)','desc') 
     ->groupBy('user_skill.skill_category_id') 
     ->get(); 

但兩者都給出以下錯誤

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'totalIds' in 'order clause' 

有什麼建議,我怎麼能解決這個問題?

+0

嘗試通過像'user_skill.totalIds'功能列名前的順序添加的表名。我不確定,但也許我們很幸運:) – AfikDeri

回答

2

如果你檢查原始函數,你會看到它只接受一個參數。

public static function raw($value){   
    return \Illuminate\Database\MySqlConnection::raw($value); 
} 

此外,你要做的是傳遞多個參數,以便除了第一個參數之外不傳遞任何東西。

您可以修復它像下面,

->select(DB::raw('user_skill.skill_category_id, skill_category.skill_name, count(user_skill.skill_category_id) as totalIds')) 

或者

->select('user_skill.skill_category_id', 'skill_category.skill_name', DB::raw('count(user_skill.skill_category_id) as totalIds'))