Hromadný update s limitem
- Tyraxor
- Člen | 31
Zdravím,
v Nette teprve začínám, takže to možná bude blbá otázka, ale narazil jsem na takový zvláštní zádrhel, který mi není uplně jasný.
Potřebuju udělat update s limitem, ktery jsem zapsal přibližně takto:
return $this->database->table($table)->where($where)->limit(10)->update($data);
Tento řádek mi, ale hodil tuto vyjímku:
Nette\NotSupportedException : LIMIT clause is not supported in
UPDATE query.
Následně jsem dotaz přepsal bez použití builderu asi takto:
return $this->database->query('UPDATE '.$table.' SET blokace = ? WHERE blokace = 0 AND status = 1 LIMIT ? ', $user, $limit);
Tento dotaz se sice provede správně, ale zase nevrací počet ovlivněných řádku, takže jsem ještě hledal kde k tomu přijdu a to se mi nakonec povedlo takto:
$result = $this->database->query('UPDATE '.$table.' SET blokace = ? WHERE blokace = 0 AND status = 1 LIMIT ? ', $user, $limit);
return $result->getPdoStatement()->rowCount();
Vše nyní funguje jak chci, ale přijde mi to zbytečně složitý a krkolomný. Proč Query Builder nepodporuje LIMIT u UPDATE? Nepřijde mi to jako nějaká složitá věc. A proč ten result je objekt naplněnej skoro samejma NULLama, ten počet ovlivněných řádku by měl být snáze dostupný.
Pokud jsem něco zásadního přehlídl, tak mi prosím napište, rád se zas něco přiučím :)