php – Laravel 4 – 模特内部的平均得分?

php – Laravel 4 – 模特内部的平均得分?,第1张

概述我想在我的数据库中返回游戏评论的平均分数.我正在用Laravel 4构建我的网站. 表结构: GAMES (id, title, etc)REVIEWS (game_id, user_id, score, etc) 控制器: public function singleGame($id){ $game = Game::find($id); if ($game) { 我想在我的数据库中返回游戏评论的平均分数.我正在用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();
总结

以上是内存溢出为你收集整理的php – Laravel 4 – 模特内部的平均得分?全部内容,希望文章能够帮你解决php – Laravel 4 – 模特内部的平均得分?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1263458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存