0

嗨,我正在使用 FOSUSerBundle 进行注册。我还向我的实体添加了这个:

    /**
 *
 * @ORM\Column(name="birthday", type="date", nullable=true, options={"default" = "0000-00-00"})
 */
protected $birthday="0000-00-00";

我的注册表没有任何内容。没有生日字段或类似的东西。我只是不想在 DB 列中有“null”。

但是当我尝试注册此错误时:

Fatal error: Call to a member function format() on a non-object in C:\xampp\htdocs\project\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\DateType.php on line 44

如何解决?:O

4

2 回答 2

1

不要使用 default = "0000-00-00",因为 Doctrine 在 PHP \DateTime 之间进行转换。并且 PHP \DateTime 的范围在 1970 年之间 - ...出于这个原因,只需使用 null 。

于 2013-03-24T21:51:18.153 回答
0

$birthday当它在持久化之前尝试构建日期时间格式时,它可能会检测到该属性不为空。因为您的字段具有 type 的值,string但您的字段类型是 datetime 它尝试执行格式。

解决方案可能是:

/**
 *
 * @ORM\Column(name="birthday", type="date", nullable=true, options={"default" = "0000-00-00"})
 */
protected $birthday=null;

确保您的数据库字段确实可以为空。

希望这可以帮助...

于 2013-03-22T19:34:09.530 回答