Выполненный запрос имеет последовательность, отличную от кода. Запрос работает, но я не знаю, почему он работает!
Вот дело:
Iполучить roomId
по $userId
, а затем я получу все playerId
по roomId
Шаги:
- в таблице
room_player_relations
, я получаюстрока где playerId
= $userId
. - в таблице
room_player_relations
, я получаю все строки, где roomId
= roomId
строки, найденной в точке 1. - выберите
playerId
из строк, найденных в точке 2.
Вот код:
$players = DB::table('room_player_relations as t1')
->where('t1.playerId',$userId)
->join('room_player_relations as t2','t1.roomId','=','t2.roomId')
->select('t2.playerId')
->get();
Вот запрос, видимый на панели отладки:
select `t2`.`playerId` from `room_player_relations` as `t1`
inner join `room_player_relations` as `t2`
on `t1`.`roomId` = `t2`.`roomId`
where `t1`.`playerId` = '1'
Это выглядит глупо, потому что он объединяет 2 одинаковые таблицы, where
ставится после.Но это работает.Пожалуйста, скажи мне почему?Спасибо!