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
 
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.