Comment fixer une date de Doctrine 2?
J'ai un champ nommé "anniversaire" dans la doctrine de l'entité.
Je voudrais créer un objet à ajouter à la base de données à l'aide de la doctrine.
À l'intérieur du contrôleur :
$name = "John Alex";
$birthday = "11-11-90";
$student = new Student();
$student->setName($name);
$student->setBirthday(strtotime($birthday);
...
mais lorsque je tente de persister, j'obtiens cette erreur
Fatal error: Call to a member function format() on a non-object in /Library/WebServer/Documents/Symfony/vendor/doctrine-dbal/lib/Doctrine/DBAL/Types/DateType.php on line 44
Edit:
Mon entité:
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var date $birthday
*
* @ORM\Column(name="birthday", type="date", nullable=true)
*/
private $birthday;
/**
* Set birthday
*
* @param date $birthday
*/
public function setBirthday($birthday)
{
$this->birthday = $birthday;
}
/**
* Get birthday
*
* @return date
*/
public function getBirthday()
{
return $this->birthday;
}
- Pourriez-vous nous montrer votre entité liée à des Étudiants ? Et avez-vous vérifié cette réponse ?
- pastebin.com/8D7tdSef (je ne peux pas éditer le sujet)
- Avez-vous vérifié cette réponse ? - à propos de DateTime
Vous devez vous connecter pour publier un commentaire.
Champs de vos entités mappées en
"datetime"
ou"date"
doit contenir les instances deDateTime
.Par conséquent, votre poseur doit être fait allusion comme suit:
Ceci permet de définir soit
null
ou une instance deDateTime
pour l'anniversaire.Comme vous le remarquez, j'ai aussi
clone
les valeurs de la date de naissance pour éviter de casser l'encapsulation (voir ORM Doctrine2 ne pas enregistrer les modifications apportées à un champ DateTime ).À la définition de l'anniversaire, il vous suffit alors de prendre les mesures suivantes:
php app/console doctrine:generate:entities
généré uniquement la méthode suivante de l'en-tête* @param \DateTime $birthdate, * @return Person, public function setBirthdate($birthdate)
. Quand j'adopte la méthode d'en-tête depublic function setBirthdate(\DateTime $birthdate = NULL)
- je obtenirArgument 1 passed to <...>::setBirthdate() must be an instance of DateTime, string given
. Mais la chaîne est vide (à cause du champ de formulaire n'est pas rempli).null
valeur.