SELECT `sloupeček` IN array()
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- nanuqcz
- Člen | 822
Ahoj, tento kód funguje:
$db->table('foo')
->select('foo.id, (foo.id IN (3, 4, 5)) AS bar');
ale tento kód hází chybu:
$db->table('foo')
->select('foo.id, (foo.id IN ?) AS bar', array(3, 4, 5));
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens.
Jde o bug?
Díky
- duke
- Člen | 650
Pokud se nic nezměnilo, tak otazníky v SELECT části dotazu Nette\Database nepodporuje. Viz půl roku stará issue na githubu.
- MichalHaltuf
- Bronze Partner | 14
Tak issue na githubu už bylo vyřešeno, bohužel funkce je pouze v masteru a do stabilní verze se zatím nedostala…
Může prosím někdo poradit, jak tuto funkci nahradit?
Když napíšu požadovanou hodnotu přímo do příkazu, tak ji \Nette\Database automaticky escapuje:
$selection = $db->table('books')
->select( 'item.*, COUNT(NULLIF(stock.action = \'transfer\', 0)) AS matchesCount' );
=>
SELECT `item`.*, COUNT(NULLIF(`stock`.`action` = '`transfer`', 0)) AS `matchesCount`
což pak samozřejmě nefunguje…