Autor | Zpráva | ||
---|---|---|---|
maarlin Profil |
#1 · Zasláno: 4. 6. 2010, 19:08:56 · Upravil/a: maarlin
Řeším takový zajímavý problém.
Mám data (XML), která obsahují informace o kategoriích, tyto kategorie chci importovat do databáze. Kategorie mají několik úrovní, proto jsem zvolil traverzování kolem stromu. Abych zamezil existenci "nepřepočítaných" záznamů při vkládání, provádím INSERT a UPDATE v jedné transakci. Konkrétně takto: dibi::begin(); dibi::query('INSERT INTO [categories] ', $data); dibi::query('UPDATE [categories] SET [left]=[left]+2, [right]=[right]+2'. ' WHERE [left] > %i', 3); dibi::commit(); $categoryId = dibi::insertId(); Snad to je pochopitelné i pro ne-dibisty, případně vysvětlím. Problém je pochopitelně v tom, že po transakci se nedokážu doptat na last inserted id, čili nemůžu začít vkládat další kategorie podle parent_id. |
||
Časová prodleva: 7 dní
|
|||
t4nn3r Profil |
#2 · Zasláno: 11. 6. 2010, 11:59:29
nevrací dibi při insertu hodnotu auto_increment na primarnim indexu ? (...objektový model co používám ho vrací)
zkus toto: $lastid = dibi::query('INSERT INTO [categories] ', $data); echo $lastid |
||
Časová prodleva: 2 měsíce
|
|||
oggy Profil * |
#3 · Zasláno: 1. 8. 2010, 15:49:17
vrací např dibi::insert(.....)->execute(dibi::IDENTIFIER);
|
||
Časová prodleva: 14 let
|
0