dva cizí klíče do jedné tabulky

sevca79
Člen | 55
+
+1
-

Ahoj,
mám ± takovouto db strukturu

boards (id, position1_id, position2_id)
positions (id, player_id)
players (id, name, surname)

propojeny logicky cizími klíči (v té hlavní jsou dva cizí klíče do jedné a té samé tabulky)

chci vypsat řádky z boards s filtrem dle jména či přijmení

avšak když zadám příkaz

$this->database->table('boards')
   ->whereOr([
      'position1_id.player_id.name LIKE ?' => '%jmeno%',
      'position1_id.player_id.surname LIKE ?' => '%jmeno%',
      'position2_id.player_id.name LIKE ?' => '%jmeno%',
      'position2_id.player_id.surname LIKE ?' => '%jmeno%'
   ]);

tak mi to vyhodí následující chybu
Table alias ‚player_id‘ from chain ‚.position2_id.player_id‘ is already in use by chain ‚.position1_id.player_id‘. Please add/change alias for one of them.

jak to prosím udělat aniž bych musel zadávat přímo dotaz přes ->query??

díky

maral
Člen | 25
+
+1
-

Vymyslel jsem to! Na Selection lze pomocí ->alias() přidávat aliasy pro různé tabulky. V tomto případě zhruba takto:

$this->database->table('boards')
   ->alias('position1', 'p1')
   ->alias('position2', 'p2')
   ->whereOr([
      'p1.player.name LIKE ?' => '%jmeno%',
      'p1.player.surname LIKE ?' => '%jmeno%',
      'p2.player.name LIKE ?' => '%jmeno%',
      'p2.player.surname LIKE ?' => '%jmeno%'
   ]);
ajda2
Člen | 66
+
0
-

Díky! Tohle mi hodně pomohlo :)