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

Doctrine は PHP の \DateTime との間で変換を行うため、default = "0000-00-00" は使用しないでください。PHP \DateTime の範囲は 1970 ~ ... この理由で null を使用してください。

于 2013-03-24T21:51:18.153 に答える
0

永続化する前に日時形式を構築しようとすると、おそらく$birthdayプロパティが null ではないことが検出されます。フィールドにはタイプの値がありますstringが、フィールドのタイプは日時であるため、フォーマットを実行しようとします。

解決策はおそらく次のようにすることです:

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

データベース フィールドが実際に null 可能であることを確認してください。

お役に立てれば...

于 2013-03-22T19:34:09.530 に答える