Nette\Database automatický join ve where s delete
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Seith
- Člen | 24
Mám tabulku foo, ve které je cizí klíč ukazující do tabulky bar. Pokud provedu tento select, Nette\Database automaticky doplní join:
$connection->table('foo')
->where('bar.param', 'ipsum')
->fetch();
Pokud ovšem chci tento záznam smazat, k joinu nedojde a mysql hlásí chybu:
$connection->table('foo')
->where('bar.param', 'ipsum')
->delete();
Alternativou je (za cenu dvou dotazů místo jednoho):
$connection->table('foo')
->where('bar.param', 'ipsum')
->fetch()
->delete();
Bug or feature?
(Nette Framework 2.1-dev)
Editoval Seith (1. 8. 2013 16:42)
- Seith
- Člen | 24
hrach napsal(a):
Jakou chybu hlasi?
Laděnka:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bar.param' in 'where clause'
SQL:
DELETE
FROM `foo`
WHERE (`bar`.`param` = 'ipsum')
Fetch (tedy select) se provede správně:
SELECT `foo`.`id`
FROM `foo`
LEFT JOIN `bar` ON `foo`.`bar_id` = `bar`.`id`
WHERE (`bar`.`param` = 'ipsum')