2015-06-26 63 views
0

好吧,讓我的項目能夠正常工作,但是我的很多數據庫都是原始查詢,我想用laravel 5的方式來完成。將MYSQL查詢轉換成Laravel 5查詢

到目前爲止,我已經能夠做到在laravel 5一些簡單的人很容易,但是我很努力在laravel複製此查詢:

$ave=DB::select("SELECT `question`.`questionID`, 
COUNT(`reviewmeta`.`id`) as count, `reviewmeta`.`answer` 
FROM `question` 
JOIN `reviewmeta` 
ON (`question`.`questionID` = `reviewmeta`.`questionID`) 
WHERE `question`.`watchID`='".$hwid."' 
AND `question`.`type`='FFT' 
GROUP BY `reviewmeta`.`answer` "); 

舉一個例子,這是我怎麼轉換我的原始查詢之一:

Laravel 5路

public static function getWatchListInfo($serviceIDS){ 
    $services = DB::table('services') 
       ->distinct() 
       ->leftJoin('reviews','services.serviceID','=','reviews.serviceID') 
       ->join('service_categories','services.type','=','service_categories.categoryID') 
       ->select('services.id','services.name','services.review_count_approved','reviews.escalate','services.average_rating','service_categories.name as catName') 
       ->whereIn('services.serviceID',$serviceIDS); 
    return $services; 
} 
+1

你到底在幹什麼? – wonderb0lt

+0

在選擇中實現計數 –

+0

將問題的這一部分作爲當前形式 - 並非採用可回答的格式。 – wonderb0lt

回答

0

你只需要添加 - >計數()這樣的:

- >其中( 'services.serviceID',$ serviceIDS) - >計數()

+1

對不起,Laravel 5示例它正常工作。我需要第一個原始的sql查詢轉換爲這種雄辯的方法,但我不確定計數部分 –

0
DB::table('questions') 
->select(['reviewmeta.answer', DB::raw('COUNT(reviewmeta.id) as count')]) 
->leftJoin('reviewmeta', 'question.questionID', '=' ,'eviewmeta.questionID') 
->where('question.watchID', $hwid) 
->where('question.type', 'FFT') 
->groupBy('reviewmeta.answer'); 

有人糾正我,如果我錯了,它已經有一段時間,因爲我已經做了laravel相關查詢。

0

與@安德魯的答案几乎相同,只是你可以使用像這樣的選擇功能。

$ave=DB::table('questions') 
->select('question.questionID', DB::raw('COUNT(reviewmeta.id) as count'),'reviewmeta.answer') 
->join('reviewmeta', 'question.questionID', '=' ,'reviewmeta.questionID') 
->where('question.watchID', $hwid) 
->where('question.type', 'FFT') 
->groupBy('reviewmeta.answer');