Когда я хочу создать новый объект с помощью одной из моих форм, Doctrine выдает мне сообщение об ошибке:
Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
Создание работало ранее, но я не знаю, что у меня есть изменения, чтобы иметь ошибкусейчас.
Моя схема для удостоверения личности:
Logement:
connection: doctrine
actAs: [Timestampable]
tableName: logement
columns:
id:
type: integer(2)
unsigned: true
primary: true
autoincrement: true
В моих формах: BaseLogementForm.class.php
$this->setWidgets(array(
'id' => new sfWidgetFormInputHidden(),
... other widgets);
$this->setValidators(array(
'id' => new sfValidatorCHoice(array('choices' => array($this->getObject()->get('id')), 'empty_value' => $this->getObject()->get('id'), 'required' => false)),
... other validators);
Редактировать:
Я даю вам, мои функции
public function executeNew(sfWebRequest $request){
// Retourne un formulaire pour la création d'un nouveau logement
$this->form = new logementForm();
}
public function executeCreate(sfWebRequest $request){
// Génére un formulaire pour la création d'un nouveau logement
$this->forward404Unless($request->isMethod(sfRequest::POST));
$this->form = new logementForm();
$this->processForm($request, $this->form);
// Affichage du formulaire dans le template "newSuccess"
$this->setTemplate('new');
}
protected function processForm(sfWebRequest $request, sfForm $form){
// Vérifie les données d'un formulaire et les enregistre dans la base
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
// On teste pour savoir dans quel cas on se situe : création/modification
// Si il s'agit d'une création :
if ($form->getObject()->isNew()) {
// Vérification de la validité des données entrées
if ($form->isValid()) {
// Si les données sont valides, enregistrement dans la base
$logement = $form->save();
// On vérifie que l'enregistrement à bien eu lieu
if ($form->save()) {
$this->getUser()->setFlash('notice', 'Création du logement effectuée');
}
else {
$this->getUser()->setFlash('error', 'Erreur lors de la création du logement');
}
// Redirection vers la fiche du logement nouvellement créé
$this->redirect('logement/fiche?id='.$logement->getId());
}
// Sinon affichage d'un message d'erreur
else {
$this->getUser()->setFlash('error', 'Informations saisies non valides');
}
}