Laravel 4 で Web サイトを構築しています。DB に、ゲームのリストを含む Games というテーブルがあります。デフォルトでは、これらのゲームを次のように並べ替えています。
$games = Game::orderBy('title', 'ASC')->paginate(20);
ユーザーは、現在プレイしているゲームを選択できます。これらのレコードは、game_id と user_id を格納する Players というテーブルに格納されます。
私が作成したいくつかの関連モデル:
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) は間違っていますが、私はこれに固執しています。
ありがとう。うまくいけば、それはすべて理にかなっています!
:)