将MYSQL查询转换为Laravel 5查询

时间:2015-06-26 14:24:38

标签: php mysql laravel eloquent laravel-5

好的,所以我的项目正在运行,但是我的很多数据库都是原始查询,我想以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;
}

3 个答案:

答案 0 :(得分:0)

你只需要像这样添加 - > count():

- >其中( 'services.serviceID',$ serviceIDS) - >计数()

答案 1 :(得分: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相关的查询,所以有一段时间。

答案 2 :(得分:0)

@ Andrew的答案几乎一样,只是你可以使用这样的select函数。

$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');