Insert při reflection: conventional nevrací activeRow

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Etruska
Člen | 25
+
+1
-

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
+
0
-

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.