我正在 Laravel 4 中建立一个网站。我的数据库中有一个名为 Games 的表,其中包含游戏列表。默认情况下,我将这些游戏排序为:
$games = Game::orderBy('title', 'ASC')->paginate(20);
用户可以选择他们当前正在玩的游戏。这些记录存储在名为 Players 的表中,该表存储 game_id 和 user_id。
我创建的几个相关模型:
class Game extends Eloquent {
public function players()
{
return $this->hasMany('Player');
}
}
class User extends Eloquent {
public function players()
{
return $this->hasMany('Player');
}
}
class Player extends Eloquent {
public function game()
{
return $this->belongsTo('Game');
}
public function user()
{
return $this->belongsTo('User');
}
}
我想做的是,能够按最受欢迎(最多的玩家)对我的游戏进行排序,以便可以以这种方式查看游戏列表。我尝试了以下方法,但这只不过是在黑暗中刺伤,因为我对 PHP 框架和 Laravel 还很陌生。
$games = Game::orderBy(count($this->players), 'DESC')->paginate(20);
显然 count($this->players) 是错误的,但我有点坚持这个。
谢谢。希望这一切都说得通!
:)