dva cizí klíče do jedné tabulky
- sevca79
- Člen | 55
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
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%'
]);