Divné chovanie pri mazaní záznamu + iná operácia

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

Narazil som na divné chovanie nette/database pri mazaní záznamu.

Tento kód nefunguje

try {
	//delete institute - need recalculate money of institutes projects
	$this->db->beginTransaction();

	//tu si vytiahnem všetky projekty ktoré sú priradené k ústavu
	$projects = $this->db->table('project_institute')
					->where('institute_id', $this->institute->id)
					->select('DISTINCT project_id AS id');

	//vymažem ústav z databázy
	$result = $this->institute->delete();

	//pole projects je teraz prázdne aj keď pred zmazaním ústavu obsahoval nejaké projekty ...
	foreach($projects as $project) {
		$this->calculateProjectData($project->id);
	}

	$this->db->commit();
} catch (PDOException $e) {
	$this->db->rollback();
	$this->flashMessage('Ústav sa nepodarilo odstrániť', 'error');
	$this->redirect('default', $faculty);
}

Takto kód funguje

try {
	//delete institute - need recalculate money of institutes projects
	$this->db->beginTransaction();

	//tu si vytiahnem všetky projekty ktoré sú priradené k ústavu
	$projects = $this->db->table('project_institute')
					->where('institute_id', $this->institute->id)
					->select('DISTINCT project_id AS id');

	//ak pred zmazaním ústavu najprv preiterujem vytiahnuté projekty tak nasledujúci kód bude fungovať ...
	foreach($projects as $project) {
		//toto pole ďalej nemusím využiť
		$project_ids[] = $project->id;
	}

	//vymažem ústav
	$result = $this->institute->delete();

	//použijem pole projektov ktoré je teraz správne naplnené
	foreach($projects as $project) {
		$this->calculateProjectData($project->id);
	}

	$this->db->commit();
} catch (PDOException $e) {
	$this->db->rollback();
	$this->flashMessage('Ústav sa nepodarilo odstrániť', 'error');
	$this->redirect('default', $faculty);
}

Toto chovanie mi nepríde správne.