How to set a date in Doctrine 2?
$name = "John Alex";$birthday = "11-11-1990"; // I changed this$student = new Student();$student->setName($name);$student->setBirthday(new \DateTime($birthday)); // setting a new date instance// ...
Fields of your entities mapped as "datetime"
or "date"
should contain instances of DateTime
.
Therefore, your setter should be type-hinted as following:
/** * Set birthday * * @param \DateTime|null $birthday */public function setBirthday(\DateTime $birthday = null){ $this->birthday = $birthday ? clone $birthday : null;}/** * Get birthday * * @return \DateTime|null */public function getBirthday(){ return $this->birthday ? clone $this->birthday : null;}
This allows setting either null
or an instance of DateTime
for the birthday.
As you notice, I also clone
the values for the birthday date to avoid breaking encapsulation (see Doctrine2 ORM does not save changes to a DateTime field ).
To set the birthday, you then simply do following:
$student->setBirthday(new \DateTime('11-11-90'));