Podivna chyba pri mazani a naslednem vybirani – nette database

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

Cau,
dnes se mi podarila objevit podivna chyba, snippet vypada zhruba takto:

<?php
		$this->context->galerie->delete($id);

		$this->template->categories = $this->context->galerie->getAll();

		$this->flashMessage('Smazáno');
		$this->invalidateControl('flashMessage');
		$this->invalidateControl('categories');
?>

jak je videt, invaliduje se snippet categories a ted pozor. Jakmile nejdriv smazu konkretni zaznam z db, tak getAll() metoda uz nic nevybere. Ale pokud ten radek s delete($id) zakomentuju, pak getAll() normalne pri prekresleni vrati relevantni data (az na to, ze prispevek s danym ID neni smazan).

To vypada hodne podivne. Nesetkal se s tim nekdo?

Diky moc! Ja

Editoval Ja (30. 4. 2014 12:14)

David Matějka
Moderator | 6445
+
0
-

jak vypada ta modelova trida „Galerie“?

snad nededi od Selection :)

Ja
Člen | 260
+
0
-

Nene

<?php
class GalerieModel extends Nette\Object
{
	const
		TABLE_NAME = 'galerie',
		COLUMN_ID = 'id';

	private $table;

	/** @var Nette\Database\Context */
	private $db;
	public function __construct(Nette\Database\Context $db){ $this->db = $db; $this->table = $db->table(self::TABLE_NAME); }
?>
David Matějka
Moderator | 6445
+
0
-

aha, ale pouzivas sdileny objekt table, takze v podstate to same :)
db->table() musis volat pokazde znovu, aby to vytvorilo novou instanci selection – ta totiz funguje jako nejaky query builder a shromazduje vsechny predchozi ->where() atd. Jednu selection pouzivej pouze pro jeden dotaz (maximalne pro nejaky count se jedna selection necha vyuzit pro vice dotazu)

Editoval matej21 (30. 4. 2014 13:22)

Ja
Člen | 260
+
0
-

myslel jsem si, ze nekde tady by mohl byt zakopan pes.
diky moc za uvedeni do deje