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