Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework][Doctrine] Problem z updatem
Forum PHP.pl > Forum > PHP > Frameworki
qba10
Mam taką akcję w kontrolerze:
  1. public function druzynowyAction(){
  2. $form = new Application_Form_Druzynowy();
  3. $this->view->form = $form;
  4. if ($this->getRequest()->isPost()) {
  5. $formData = $this->getRequest()->getPost();
  6. if ($form->isValid($formData)) {
  7. /* */
  8. $Druzynowi = new Application_Model_Druzynowi();
  9. $Druzynowi->prefix = $_SESSION["Autoryzacja"]["prefix"];
  10. $Druzynowi->imie = $form->getValue("imie");
  11. $Druzynowi->nazwisko = $form->getValue("nazwisko");
  12. $Druzynowi->stopienInstruktorski = $form->getValue("stopienInstruktorski");
  13. $Druzynowi->stopienHarcerski = $form->getValue("stopienHarcerski");
  14. $Druzynowi->rokZdobyciaStopnia = $form->getValue("rokInstruktorski");
  15. $Druzynowi->rokUrodzenia = $form->getValue("rokUrodzenia");
  16. if($form->getValue("kurs") == "tak"){
  17. $Druzynowi->kursDruzynow = true;
  18. }else{
  19. $Druzynowi->kursDruzynow = false;
  20. }
  21. $Druzynowi->zawod = $form->getValue("zawod");
  22. $Druzynowi->pracaWazna = $form->getValue("pracaWazne");
  23. $Druzynowi->miejscePracy = $form->getValue("miejscePracy");
  24. $Druzynowi->uprawnieniaZawodowe = $form->getValue("uprawnieniaZawodowe");
  25. $Druzynowi->prefixDruzynowy = md5(time().$form->getValue("imie"));
  26. // $Druzynowi->save();
  27. $q = Doctrine_Query::create()
  28. ->update('Application_Form_User')
  29. ->set('imie', "imie")
  30. ->set('nazwisko', "nazwisko")
  31. ->where('id = ?', $_SESSION["Autoryzacja"]["prefix"])
  32. ->execute();
  33.  
  34. $this->_redirect('/index/success');
  35.  
  36.  
  37. } else {
  38. $form->populate($formData);
  39. }
  40. }
  41. }


No i nie wiem dlaczego nie mogę z update'ować tablei.
Wyskakuje mi taki błąd:


exception 'Doctrine_Table_Exception' with message 'Class "Zend_Form" must be a child class of Doctrine_Record' in /home/qba/www/WDGbase/library/Doctrine/Table.php:319
Stack trace:
#0 /home/qba/www/WDGbase/library/Doctrine/Table.php(256): Doctrine_Table->initDefinition()
#1 /home/qba/www/WDGbase/library/Doctrine/Connection.php(1126): Doctrine_Table->__construct('Application_For...', Object(Doctrine_Connection_Mysql), true)
#2 /home/qba/www/WDGbase/library/Doctrine/Query.php(1942): Doctrine_Connection->getTable('Application_For...')
#3 /home/qba/www/WDGbase/library/Doctrine/Query.php(1740): Doctrine_Query->loadRoot('Application_For...', 'Application_For...')
#4 /home/qba/www/WDGbase/library/Doctrine/Query/From.php(88): Doctrine_Query->load('Application_For...')
#5 /home/qba/www/WDGbase/library/Doctrine/Query/Abstract.php(2077): Doctrine_Query_From->parse('Application_For...')
#6 /home/qba/www/WDGbase/library/Doctrine/Query.php(1167): Doctrine_Query_Abstract->_processDqlQueryPart('from', Array)
#7 /home/qba/www/WDGbase/library/Doctrine/Query.php(1133): Doctrine_Query->buildSqlQuery(true)
#8 /home/qba/www/WDGbase/library/Doctrine/Query/Abstract.php(958): Doctrine_Query->getSqlQuery(Array)
#9 /home/qba/www/WDGbase/library/Doctrine/Query/Abstract.php(1026): Doctrine_Query_Abstract->_execute(Array)
#10 /home/qba/www/WDGbase/application/controllers/AddController.php(146): Doctrine_Query_Abstract->execute()
#11 /home/qba/www/ZendFramework/library/Zend/Controller/Action.php(513): AddController->druzynowyAction()
#12 /home/qba/www/ZendFramework/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('druzynowyAction')
#13 /home/qba/www/ZendFramework/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#14 /home/qba/www/ZendFramework/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#15 /home/qba/www/ZendFramework/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#16 /home/qba/www/WDGbase/public/index.php(32): Zend_Application->run()
#17 {main}


Bez tego fragmentu jest wszystko w porządku :
  1. $q = Doctrine_Query::create()
  2. ->update('Application_Form_User')
  3. ->set('imie', "imie")
  4. ->set('nazwisko', "nazwisko")
  5. ->where('id = ?', $_SESSION["Autoryzacja"]["prefix"])
  6. ->execute();


Pozdrawiam
darko
Czy klasa Application_Form_Druzynowy dziedziczy po Doctrine_Record ? Z treści wyjątku wynika, że powinna. qba10 - stopka - no comments tongue.gif
qba10
Ok rozwiązane. Przez głupotę zamiast model doctrine chciałem updetować formularz tongue.gif

Teraz jednak wyskakuje mi taki błąd:

exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '208535e6bee23b07ae79d3c68268ac57' for key 'prefix'' in /home/qba/www/WDGbase/library/Doctrine/Connection.php:1082
Stack trace:
#0 /home/qba/www/WDGbase/library/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement))
#1 /home/qba/www/WDGbase/library/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array)
#2 /home/qba/www/WDGbase/library/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO dru...', Array)
#3 /home/qba/www/WDGbase/library/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(Doctrine_Table), Array)
#4 /home/qba/www/WDGbase/library/Doctrine/Connection/UnitOfWork.php(571): Doctrine_Connection_UnitOfWork->processSingleInsert(Object(Application_Model_Druzynowi))
#5 /home/qba/www/WDGbase/library/Doctrine/Connection/UnitOfWork.php(81): Doctrine_Connection_UnitOfWork->insert(Object(Application_Model_Druzynowi))
#6 /home/qba/www/WDGbase/library/Doctrine/Record.php(1718): Doctrine_Connection_UnitOfWork->saveGraph(Object(Application_Model_Druzynowi))
#7 /home/qba/www/WDGbase/application/controllers/AddController.php(140): Doctrine_Record->save()
#8 /home/qba/www/ZendFramework/library/Zend/Controller/Action.php(513): AddController->druzynowyAction()
#9 /home/qba/www/ZendFramework/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('druzynowyAction')
#10 /home/qba/www/ZendFramework/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#11 /home/qba/www/ZendFramework/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#12 /home/qba/www/ZendFramework/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#13 /home/qba/www/WDGbase/public/index.php(32): Zend_Application->run()
#14 {main}


phpion
Cytat(qba10 @ 26.07.2010, 13:41:06 ) *
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '208535e6bee23b07ae79d3c68268ac57' for key 'prefix'

To już komunikat z bazy danych, więc ZF/D nie ma tu nic do rzeczy. Masz pewnie założone ograniczenie unikalności dla pola, do którego chcesz wstawić dane, a pole o takiej wartości już istnieje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.