nette/database/ last iserted id

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

Zdravím, prevazne jsem pouzival dibi, ted jsem se k nette vratil po delsi dobe a nechal si nette/database s tim ze potrebuji dostat posledni vlozene id ->
samozrejme jsem hledal
insert vrací activeRow, takže id získáš takot:

$row = $this->model->getAddresses()->insert(…);
$id = $row->id;

nefici, dikes

saimons
Člen | 293
+
0
-
$this->database->table('uzivatel')->insert(array(...));
$uzivatel_id = $this->database->lastInsertId('uzivatel');
randallll
Člen | 22
+
0
-

dikes

saimons napsal(a):

$this->database->table('uzivatel')->insert(array(...));
$uzivatel_id = $this->database->lastInsertId('uzivatel');
Šaman
Člen | 2666
+
0
-

randallll napsal(a):

Zdravím, prevazne jsem pouzival dibi, ted jsem se k nette vratil po delsi dobe a nechal si nette/database s tim ze potrebuji dostat posledni vlozene id ->
samozrejme jsem hledal
insert vrací activeRow, takže id získáš takot:

$row = $this->model->getAddresses()->insert(…);
$id = $row->id;

nefici, dikes

A vrací ti to ActiveRow? A zapisuje to do db? Tohle by mělo fungovat, ale samozřejmě nevím, co ti vrací getAddresses().

Ja
Člen | 260
+
0
-

Narazil jsem na stejnej problem,

$row = $this->db->table(‚file‘)->insert($file_db);
dump($row);

vraci jen „1“. Jinde mi to activerow doopravdy vraci, tady ovsem ne. Mam to v BasePresenteru, vsechny ostatni presentery od nej dedi.

Jinak zaznam se vlozi OK.

Ja
Člen | 260
+
+1
-

Fixed – bylo to nette 2.2. kde insert vraci pocet ovlivnenych radku, KDYZ neni primarni klic. For je v tom, ze ja ho mel definovan (resp. se to tak tvarilo), kdyz jsem to zkusil nad jinou tabulkou, tak to slo.

Ale je to wtf chyba, prejmenoval jsem tabulku na jiny nazev (tam uz nette ten primary key vidi) a razem to jde.

greeny
Člen | 405
+
0
-

Téměř totožné téma: https://forum.nette.org/…jeho-vlozeni

ludek
Člen | 83
+
0
-

Tohle má nějakou souvislost s cache. Pokud vytvořím novou tabulku v databázi, dostávám chyby, že tabulka nemá primární klíč, který ve skutečnosti má. Navíc INSERT nevrací objekt. Stačí cache smazat a v pořádku. Nette 2.3.3.

McLaren
Člen | 2
+
0
-

Díky, taky pomohlo smazat cache.