2015-07-10 97 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