| 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: 15 let
|
|||
0