NOTORM – parametry v poddotazu se nepřenáší do dotazu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- barbucha
- Člen | 11
Zdravím,
setkal jsem se z nádledujícím problémem
<?php
$company = $db->table('company')->select('person_id')->where('name', 'XYZ');
$person = $db->table('person')->where('id',$company)->where('name', 'Novak');
?>
Tento dotaz vytvoril spravne sql,
<?php
SELECT * FROM person WHERE ( id IN (SELECT person_id FROM company WHERE name = ?) ) AND
(name = ?)
?>
ale provadeni zkoncilo z chybou
SQLSTATE[08P01]: <<Unknown error>>: 7 ERROR: bind message supplies 1 parameters, but prepared statement „pdo_stmt_00000003“ requires 2
Po blizsim pruzkumu jsem zjistil, ze „mizi“ parametr predavany u $company. Proto jsem lehce upravil knihovnu Nette/Database/Table/SqlBuilder.php, kde jsem za radek 164 pridal
<?php
$this->parameters[] = $clone->sqlBuilder->getParameters();
?>
PHP 5.4.9
Nette 2.0.8
Databaze – PostgreSQL 9.1
Tato chyba se neprojevuje v MySQL.