Doctrine ORM: NULL to DateTime conversion error
我使用PHP7、Symfony 2.8和ORM 2.5。我有一个具有日期时间字段的实体:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /** @ORM\Column(name="data_ordine", type="datetime", nullable=true) */ private $dataOrdine; /** * @param mixed $dataOrdine */ public function setDataOrdine($dataOrdine = null) { $this->dataOrdine = $dataOrdine; } /** * @return mixed */ public function getDataOrdine() { return $this->dataOrdine; } |
如果dataordine列为空,当我尝试获取MySQL数据库中持久化实体的$dataordine字段($ordine->getdataordine())时,我得到:
1 2 3 4 5 6 7 8 | object(DateTime)#551 (3) { ["date"]=> string(27)"-0001-11-30 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13)"Europe/Berlin" } |
而不是空
我前段时间也遇到过同样的问题。正如@goto所说,你的专栏不会以
因为这正是发生在我身上的事情,所以我完全确信有问题的行的值是以
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | $null_date = new DateTime(null); $wrong_date = new DateTime('0000-00-00 00:00:00'); var_dump($null_date); var_dump($wrong_date); object(DateTime)#1 (3) { ["date"]=> string(26)"2018-01-17 13:22:01.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10)"US/Pacific" } object(DateTime)#2 (3) { ["date"]=> string(27)"-0001-11-30 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(10)"US/Pacific" } |
我有一个根本不喜欢的解决方法,我让DBA在这些列中不允许空的无效日期,而不是发布和接受作为答案的内容。
有关详细信息,请访问:如何在doctrine2 select查询中处理日期时间类型的默认值?
一些客户机显示0000-00-00 00:00:00值为空。因此,通过命令行客户机进行检查以确保(cli显示正确的值)。然后更新为空,值为0000-00-00 00:00:00