Insert při reflection: conventional nevrací activeRow
- Etruska
- Člen | 25
Ahoj,
v projektu používáme dočasně NDB s reflection: conventional (špatně
navržená databáze bez cizích klíčů), ovšem s tímto nastavením to
v Nette 2.4 po volání insert
metody vrací jenom počet řádků místo ActiveRow objektu, ze kterého lze
získat id.
Není to ale proto, že by se nenašel primary sloupec, ale překvapivě to padá zde, konkrétně na PDO::lastInsertId, které vrací 0. Mám tip, že je to způsobené tím, že před INSERT a lastInsertId se zavolá jiný sql dotaz, kvůli čemuž pak lastInsertId vrací 0.
Setkali jste se s tím někdy? Lze to řešit jinak, než předěláním na
reflection: discovered?
Díky :)
- kolsi
- Člen | 131
Připojím se s doplňujícím dotazem… jak by se to mělo chovat u spojovacích tabulek?
Nette 2.3 vracelo vložený záznam:
public function assignUserRole($user_id, $role_id) {
$row = $this->getTable()->insert(array(
"user_id" => $user_id,
"role_id" => $role_id
));
return $row->role;
}
Nette 2.4 vrací pouze počet vložených záznamů (tj. 1). Jako primární klíč jsou nastaveny oba sloupce.