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.