wygenerowałem domyślnego CRUD'a dla tabeli użytkownika. W tabeli znajduje się również id użytkownika który polecił serwis(idpolecajacy).
zmieniłem __toString, user'a, i ładnie wyświetla wszystkich użytkowników w domyślnym formularzu. Początkowo w schema.yml nie ustawiłem notnull (dla pola idpolecajacy), i każda próba stworzenia nowego user'a kończyła się powodzeniem z małym ALE, w idpolecajacy wstawiany był NULL. Jeżeli użytkownik był edytowany, wszystkie dane można było zmienić, poza idpolecajacy. potem ustawiłem not null (jak w poniższym listingu), od tej pory symfony zaczął sypać błędem:
500 | Internal Server Error | Doctrine_Connection_Mysql_Exception SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'idpolecajacy' cannot be null stack trace at () in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connect
ion.php line 1082 ... } $exc = new $name($message, (int) $e->getCode()); } at Doctrine_Connection->rethrowException(object('PDOException'), object('Doctrine_Connection_Statement')) in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connect
ion\Statement.php line 269 ... at Doctrine_Connection_Statement->execute(array('zdzichu', 'zdzichu@mail.mail', 'tajnehaslo', null)) in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connect
ion.php line 1042 ... at Doctrine_Connection->exec('INSERT INTO user (nick, email, haslo, idpolecajacy) VALUES (?, ?, ?, ?)', array('zdzichu', 'zdzichu@mail.mail', 'tajnehaslo', null)) in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connect
ion.php line 687 ... at Doctrine_Connection->insert(object('userTable'), array('nick' => 'zdzichu', 'email' => 'zdzichu@mail.mail', 'haslo' => 'tajnehaslo', 'idpolecajacy' => null)) in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connect
ion\UnitOfWork.php line 647 ... at Doctrine_Connection_UnitOfWork->processSingleInsert(object('user')) in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connect
ion\UnitOfWork.php line 571 ... at Doctrine_Connection_UnitOfWork->insert(object('user')) in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connect
ion\UnitOfWork.php line 81 ... at Doctrine_Connection_UnitOfWork->saveGraph(object('user')) in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Record.php line 1718 ... at Doctrine_Record->save(object('Doctrine_Connection_Mysql')) in SF_SYMFONY_LIB_DIR\form\addon\sfFormObject.class.php line 161 ... at sfFormObject->doSave(object('Doctrine_Connection_Mysql')) in SF_SYMFONY_LIB_DIR\form\addon\sfFormObject.class.php line 130 ... at sfFormObject->save() in SF_ROOT_DIR\apps\frontend\modules\user\actions\actions.class.php line 74 ... at userActions->processForm(object('sfWebRequest'), object('userForm')) in SF_ROOT_DIR\apps\frontend\modules\user\actions\actions.class.php line 37 ... at userActions->executeCreate(object('sfWebRequest')) in SF_SYMFONY_LIB_DIR\action\sfActions.class.php line 60 ... at sfActions->execute(object('sfWebRequest')) in SF_SYMFONY_LIB_DIR\filter\sfExecutionFilter.class.php line 92 ... at sfExecutionFilter->executeAction(object('userActions')) in SF_SYMFONY_LIB_DIR\filter\sfExecutionFilter.class.php line 78 ... at sfExecutionFilter->handleAction(object('sfFilterChain'), object('userActions')) in SF_SYMFONY_LIB_DIR\filter\sfExecutionFilter.class.php line 42 ... at sfExecutionFilter->execute(object('sfFilterChain')) in SF_SYMFONY_LIB_DIR\filter\sfFilterChain.class.php line 53 ... at sfFilterChain->execute() in SF_SYMFONY_LIB_DIR\filter\sfRenderingFilter.class.php line 33 ... at sfRenderingFilter->execute(object('sfFilterChain')) in SF_SYMFONY_LIB_DIR\filter\sfFilterChain.class.php line 53 ... at sfFilterChain->execute() in SF_SYMFONY_LIB_DIR\controller\sfController.class.php line 238 ... at sfController->forward('user', 'create') in SF_SYMFONY_LIB_DIR\controller\sfFrontWebController.class.php line 48 ... at sfFrontWebController->dispatch() in SF_SYMFONY_LIB_DIR\util\sfContext.class.php line 170 ... at sfContext->dispatch() in SF_ROOT_DIR\web\frontend_dev.php line 13 ...
schema.yml wygląda następująco:
--- detect_relations: true options: collate: utf8_polish_ci charset: utf8 type: InnoDB user: columns: iduser: type: integer(4) primary: true notnull: true autoincrement: true nick: type: string(45) notnull: true email: type: string(256) notnull: true haslo: type: string(128) notnull: true idpolecajacy: type: integer(4) notnull: true relations: idpolecajacy: class: user local: idpolecajacy foreign: iduser foreignAlias: users indexes: fk_user_user1: fields: [idpolecajacy]
formularz był poprawnie generowany i każdy idpolecajacy w comboboxie miał odpowiednią wartość oraz etykietę,
tablica POST też przyjmowała odpowiednią wartość dla tego pola.
jestem początkującym w tym frameworku, a tu takie schody :]
wersja symfony: 1.4.13
bardzo proszę o pomoc/sugestie, może zapomniałem o czymś? tego typu CRUD powinien chyba działać od razu po zmianie funkcji __tostring?
ps.
symfony generuje takiego inserta:
INSERT INTO user (nick, email, haslo, idpolecajacy) VALUES (?, ?, ?, ?) - (zdzichu, zdzichu@mail.mail, tajnehaslo, )
zupełnia pomija idpolecajacy, dlaczego ta wartość się gubi?