Action v prezenteru se provede dvakrát
- mr.mac
- Člen | 87
Předem se omlouvám za „laický“ dotaz. Dostal jsem se po čase zase k práci na aplikaci, kterou jsem před 2 lety vytvořil za pomocí Nette 2.0b (2.0 stable se mi zatím nepodařilo rozchodit – kód aplikace je už dost velký). Mám problém s duplicitami v databázi, které se mi vytváří při spouštění akce „Kopie záznamu“.
Akce v prezenteru je tato:
public function actionCopyNabidka($id) {
$instance = new Nabidka;
$result = $instance->copyNabidka($id, $this->user->id);
if(!$result or $result==0){
$this->flashMessage('Zkopírování nabídky bylo neúspěšné.','warning');
$this->redirect('detail', $id);
} else {
$this->flashMessage("Nabídka byla zkopírována pod novým číslem $result.");
$this->redirect('detail', $result);
}
}
V modelu mám tuto metodu (spuštění uložené procedury – vytváří se kopie dat v několika provázaných tabulkách – DB je MS SQL, to ale není podstatné, procedura funguje dobře):
public function copyNabidka($id, $id_user){
if($id>0 && $id_user>0){
$res = $this->CONN->query("DECLARE @id_nab int;
EXECUTE copyOffer $id, $id_user, @id_nab OUTPUT;
SELECT @id_nab [nid]")->fetch();
return $res->nid;
} else {
return false;
}
}
Výsledek je, že se uloží 2 kopie aktuálního záznamu v databázi
(dle $id)
. V prezenteru je v akci přesměrování (dle výsledku
z uložené procedury) asi tak jak má být, nebo ne? Díky moc za radu.
EDIT: Žádné nápady? To mě mrzí, myslel jsem, že někde mám fatální chybu, na první pohled jasnou.
Editoval mr.mac (25. 11. 2013 17:25)