Nette\Database – použití transakce
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MW
- Člen | 615
Zdravim a prosím o radu, jak spravne pouzit transakce.
Tady je kus kodu, pouzil jsem neco podobneho, co jsem zde nasel, ale neprijde
me, ze to funguje.
DB je v MyISAM ale tabulky jsou Inno3d. Nemuze to vadit? Je toto pouziti v Nette spravne?
Jde me o zrychleni, davka obsahuje tisice zaznamu.
Predem diky !
Presenter
foreach ($rozpad as $dataV) {
$dataV->firma = "xxx";
$dataV->cislo_fa = "xxx";
$dataV->varsym = "xxx";
$dataV->castka = "xxx";
self::$database->beginTransaction();
$this->saveVynosy($dataV);
self::$database->commit();
}
v modelu je pak
public function saveVynosy($values) {
self::$database->table('vynosy')->insert($values);
}
- Ot@s
- Backer | 476
Vyzkoušej vícenásobný insert, viz. např. toto vlákno o vícenasobném insertu ve fóru.
- Ot@s
- Backer | 476
Nachystej si data do pole (třeba z CSV, nevím odkud je bereš).
$dataV = array(
array('firma'=>'xxx', 'cislo_fa'=>'xxx', 'varsym'=>'xxx', 'castka'=>'xxxx'),
array('firma'=>'xxx', 'cislo_fa'=>'xxx', 'varsym'=>'xxx', 'castka'=>'xxxx'),
array('firma'=>'xxx', 'cislo_fa'=>'xxx', 'varsym'=>'xxx', 'castka'=>'xxxx')
// atd...
);
$this->database->exec('INSERT INTO invoice', $dataV); // v příslušné metodě modelu (s param $dataV)