次のクエリを雄弁に作成する方法を見つけようとしています。
SELECT *
FROM `pvp_battles`
WHERE (player1_id = 2 || player2_id =2) && winner !=2
2 はプレイヤー ID です。これは私がしたことです:
$profile->loses = PvpBattle::where('player1_id',$profile->id)
->orWhere('player2_id',$profile->id)
->where('winner','!=',$profile->id)->count();
残念なことに、カウントは 25 であるのに 49 であることが示されています。何が問題なのですか?
修正は次のとおりです。
$profile->loses = PvpBattle::where(function($q) use($profile) {
return $q
->where('player1_id', $profile->id)
->orWhere('player2_id', $profile->id);
})->where('winner', '!=', $profile->id)->count();
または:
$profile->loses = PvpBattle::where(DB::raw($profile->id.' IN (`player1_id`, `player2_id`)'))
->where('winner', '!=', $profile->id)->count();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加