Laravel orderBy使用2个表?

时间:2017-04-01 14:19:43

标签: php mysql laravel

请不要告诉我将orderBy放在函数中,因为这不起作用。 kill_count和death_count是roleplay关系

的列

这是我的完整代码:

$topCredits = Player::whereHas("roleplay", function($q) {
            $q->where('government_id', '<', '1');
        })->orderBy('credits', 'DESC')->limit(10)->get();

        $topKills = Player::whereHas("roleplay", function($q) {
            $q->where('government_id', '<', '1')->orderBy('kill_count', 'DESC');
        })->limit(10)->get();

        $topDeaths = Player::whereHas("roleplay", function($q) {
            $q->where('government_id', '<', '1')->orderBy('death_count', 'DESC');
        })->limit(10)->get();

现在,第一个$topCredits工作正常,但底部2不工作。它们工作得非常好,除了它不是由death_count和kill_count命令的事实,任何人都可以帮忙吗? roleplay是两侧hasOne的关系。

1 个答案:

答案 0 :(得分:0)

whereHas中的orderBy不会对玩家产生任何影响。因为WhereHas是付款人的子查询。

 $topKills = Player::whereHas("roleplay", function($q) {
      $q->where('government_id', '<', '1');
  })->leftJoin("roleplay","roleplay.player_id","=","players.id")
   ->select("players.*")
   ->orderBy('roleplay.kill_count', 'DESC')
   ->limit(10)
   ->get();

希望这有帮助