请不要告诉我将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的关系。
答案 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();
希望这有帮助