Bonjour tout le monde !
J'ai un petit problème avec Symfony2 :
Voilà j'ai une entité qui possède un champ "date_creation" et "lib". J'ai crée cette dernière en générant l'entité en console. Lorsque j'ai généré j'ai choisi le type "date" donc lorsque je regarde le fichier généré, le type de column est bien à date (car je vais stocker seulement la date dans la base de données) mais l'annotation pour la variable date_creation est de type Datime ? C'est normal ?
Mais ce n'est pas le problème même si je me demande pourquoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 /** * @var string $lib * * @ORM\Column(name=XE_"LIB", type="string", length=255) */ private $lib; /** * @var \DateTime $date_creation * * @ORM\Column(name="XE_DATE_CREATION", type="date") */ private $date_creation;
Le problème est que j'ai crée un formulaire externe "entiteType" en console toujours. Dont le builder est celui-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('lib') ->add('date_creation') }
J'ai un problème lorsque je flush mon entité. En fait j'ai 3 cas :
- Quand j'affiche le formulaire en entier pour chosir la date manuellement et le libellé => ca le flush bien OK.
- Si je n'utilise pas le formulaire, je crée seulement une entité dont j'attribue des valeurs en brut comme ceci :
=> ca le flush bien ok.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $e = new Entite(); $e->setLib( "test" ); $e->setDateCreation( new \Datetime('now') );
- MAIS si je fais un mix des deux, c'est-à-dire que j'utilise le formulaire mais je n'affiche que le libellé car je vois le choisir manuellement mais pas la date car la date est choisi automatiquement à la date d'aujourd'hui. La date est donc choisi de cette manière :
Mais le champ date_creation du formulaire n'est pas afficher car pas besoin => Ca ne flush pas => J'ai une erreur qui me dit que la date est à null (contrainte d'intégrité). => J'ai var_dump la variable et effectivement la date est à null mais je ne sais pas pourquoi. Bizarre que l'annotation soit à datetime et le champ en base de donnée à date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $e = new Entite(); $e->setDateCreation( new \Datetime('now') );
Merci pour votre patience et votre aide.
Cordialement,
Mugen.
Partager