2015-07-10 92 views
2

這個函數的模型,我有:Laravel 5.1 - 數據庫是加回我的查詢返回?

public static function getUserQuestions($id_user = null, $sort_by = 'date') 
{ 
    $getData = DB::table('questions') 
     ->select('map_user_question_vote.id_question, questions.id, SUM(map_user_question_vote.vote) as votes', false) 
     ->leftJoin('map_user_question_vote', 'map_user_question_vote.id_question', '=', 'questions.id') 
     ->where('questions.id_user', $id_user) 
     ->where('map_user_question_vote.id_question', 'questions.id') 
     ->groupBy('questions.id') 
     ->get(); 
} 

的輸出這樣的:

select `map_user_question_vote`.`id_question,` as `SUM(map_user_question_vote.vote)`, `` from `questions` 
left join `map_user_question_vote` on `map_user_question_vote`.`id_question` = `questions`.`id` 
where `questions`.`id_user` = 1 and `map_user_question_vote`.`id_question` = questions.id 
group by `questions`.`id` 

與此相同的問題: mysql | Codeigniter Active Records are adding extra back ticks to query

但對於Laravel,不CI。

你還會注意到我的SUM()as ...都搞砸了嗎? 有沒有辦法解決這個問題?

回答

2

怎麼是這樣的:

$getData = DB::table('questions') 
->select(DB::raw('map_user_question_vote.id_question, questions.id, SUM(map_user_question_vote.vote) as votes')) 
->leftJoin('map_user_question_vote', 'map_user_question_vote.id_question', '=', 'questions.id') 
->where('questions.id_user', $id_user) 
->where('map_user_question_vote.id_question', 'questions.id') 
->groupBy('questions.id') 
->get(); 
+0

DB ::原料....我怎麼suppsed學這樣的東西等你擅長民族?我現在正在測試.... – Beertastic

+0

這解決了我的背景問題..但現在我的Where語句顯示?而不是第二個參數:where'questions'.'id_user' =?和'map_user_question_vote'.'id_question' =? ---另外:我正在使用 - > toSql()而不是 - > get()來查看我的SQL – Beertastic

+0

嗯......您可以嘗試在Laravel文檔中尋找更多示例(http://laravel.com/docs /5.1/queries)。 – BakerStreetSystems