beginTransaction – NetteDatabase vs PDO

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

Vsiml jsem si, ze ve verzi 2.1 se trida Nette\Database\Connection neodvozuje od PDO jako ve verzi 2.0 , avsak (snad kvuli zpetne kompatibilite) nabizi vetsinu jeho metod. Bohuzel ne vzdy dostatecne podobne – napr. beginTransaction, commit a rollBack nevraceji hodnotu urcujici uspech akce, coz muze byt zadouci.

enumag
Člen | 2118
+
0
-

Máš tam metodu getPdo() takže si ty transakce můžeš volat přímo na PDO objektu.

sKopheK
Člen | 207
+
0
-

Tak jsem to taky nakonec udělal, ale šlo mi primárně o to, aby se metody chovaly tak, jak se od nich čeká, když to ještě v minulé verzi takto fungovalo. Pokud se bude takto postupovat, tak se autoři nemusí bát o upgrade Nette, v opačném případě budou zůstávat na starších verzích, které mají nedostatky a chyby a ty se musí zbytečně obcházet.

hrach
Člen | 1844
+
0
-

Diky za report, udelam issue na githubu.

David Grudl
Nette Core | 8282
+
0
-

Žádná metoda nevrací hodnotu určující úspěch akce, od toho jsou v Nette\Database výjimky. Takže pokud jsi testoval návratovou hodnotu u beginTransaction(), nedělal jsi dobře.

sKopheK
Člen | 207
+
0
-

Tak to jsem špatně pochopil v dokumentaci např. @return int number of affected rows or FALSE in case of an error.

Správný postup je tedy všude při operacemi s databázích zachytávat výjimky \PDOException ?