If Exists Update Else Insert

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

Zdravím,
používám Nette/Database a chtěl bych se zeptat, jestli je možné jednoduše udělat toto:
Pokud záznam v DB existuje, uprav ho, jestli ne, tak ho vlož.

Pokud udělám update a záznam tam neexistuje vyhodí hlášku:

Notice
Trying to get property of non-object

Vím jak to udělat přes podmínky, ale chtěl bych vědět jestli by to šlo udělat jednodušeji než:

Ověřím jestli záznam s ID existuje
If Ano
	Update
else
	Insert

Díky

Mysteria
Člen | 797
+
0
-

Nehledáš náhodou tohle? https://dev.mysql.com/…plicate.html

Croc
Člen | 270
+
0
-

To jo, o tom vím (dohledal jsem starší verzi a měl jsem to takhle bez Nette). Ale jde mi o to jestli to Nette/Database neumí zapsat lépe.

Editoval Croc (14. 8. 2015 16:38)

Mysteria
Člen | 797
+
0
-

Ne. Pokud chceš použít Database\Table tak si to musíš opodmínkovat, pokud ti stačí normální Database query, tak můžeš použít výše zmíněný příkaz.

Croc
Člen | 270
+
+1
-

Chvilku jsem zkoušel jaký zápis to zkousne. Výsledek je myslím super :-)

$this->database->query('INSERT INTO table ?
ON DUPLICATE KEY UPDATE ?', $array, $array);

Díky za upřesnění.

Editoval Croc (14. 8. 2015 18:04)