I am trying to make an Entity using a date as a primary key. The problem is that Symfony can't convert the DateTime I'm using into a string to introduce it in the IdentityMap. I get the following error during the persist of the entity:
Catchable Fatal Error: Object of class DateTime could not be converted to string in..
I'm using this code in the entity:
/**
* @ORM\Id
* @ORM\Column(type="datetime")
*/
protected $date;
The error appears in the entity repository:
$em = $this->getEntityManager();
$currentData = new CurrentData();
...
$currentData->setDate(new \DateTime($dateStr));
...
$em->persist($currentData);
$em->flush();
How can I solve this problem? Thank you.
I had the same problem here. I worked around it by using this:
if you want to use datetime, you should use a different format like \DateTime::ISO8601. Be careful at saving stuff with timezones.
You probably should just use a normal sequence.
However, if you must use calendar information to key, you might want to store it as a 'string' type and then use php's DateTime Format:
You are probably headed for misery if you try to use a datetime object for key.
A roubust solution to this is to implement your own DBAL type, using a DateTime descendant with __toString() implemented: