php – Laravel 4 – 模特内部的平均得分?
发布时间:2020-12-14 19:46:52 所属栏目:大数据 来源:网络整理
导读:我想在我的数据库中返回游戏评论的平均分数.我正在用Laravel 4构建我的网站. 表结构: GAMES (id,title,etc)REVIEWS (game_id,user_id,score,etc) 控制器: public function singleGame($id){ $game = Game::find($id); if ($game) { return View::make('gam
我想在我的数据库中返回游戏评论的平均分数.我正在用Laravel 4构建我的网站.
表结构: GAMES (id,title,etc) REVIEWS (game_id,user_id,score,etc) 控制器: public function singleGame($id) { $game = Game::find($id); if ($game) { return View::make('game')->with('game',$game); } else { return Redirect::to('/'); } } 我的想法是希望在我的观点中通过$game->平均值返回游戏的平均分数,但是我无法通过摆弄我的游戏模型来产生预期的结果. 游戏模型: public function scores() { return $this->hasMany('Review')->avg('score'); } 我已经尝试了一些查询构建器可用的方法,但是当我谈到Laravel / PHP时,我仍在学习绳索,所以我有点卡住了.也许我应该以不同的方式解决问题? 谢谢.
这里有两种选择:
可读性(两个查询) $game = Game::find(1); $game->average = $game->reviews()->avg('score'); 请注意,这假设您的游戏模型中的关系具有评论功能. public function reviews() { return $this->belongsTo('Game'); } 此替代方案使用avg aggregate功能. QueryBuilder提供的聚合函数仅返回聚合标量. 表现(一个查询) 如果你真的想在一个查询中这样做.这是一个替代方案: $game = Game::select('games.*',DB::raw('avg(reviews.score) AS average')) ->join('reviews','reviews.game_id','=','game.id') ->groupBy('reviews.game_id') ->where('game.id',1) ->first(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |