我正在尝试使用教义来持久化实体,该实体具有日期属性,显然,这会产生错误。
这是在实体中声明属性的方式:
/**
* @var date
*
* @ORM\Column(name="fecha", type="date")
* @ORM\Id
*/
private $fecha;
这就是我在控制器上创建实体的方式以及使用doctrine来保存它的代码:
$estadistica = new EstadisticaTerceros();
$fecha = date_create_from_format('Y-m-d', '2017-05-04');
$estadistica->setFecha($fecha);
//Set other attributes
$em = $this->getDoctrine()->getManager();
$em->persist($estadistica);
$em = $this->getDoctrine()->getManager();
$em->flush();
在表格中,属性是日期类型。
有什么想法吗?
答案 0 :(得分:2)
我假设您的fecha
列不是表格的主键。因此,您可以从该列中删除@ORM\Id
注释:
/**
* @var \DateTime
*
* @ORM\Column(name="fecha", type="date")
*/
private $fecha;
date_create_from_format
也是DateTime::createFromFormat
的别名,我建议您使用它,以便您更明确地创建一个\ DateTime:
$fecha = \DateTime::createFromFormat('Y-m-d', '2017-05-04');
答案 1 :(得分:1)
如果$estadistica->setFecha
期待一个字符串,只需直接传递ISO 8601日期字符串'2017-05-04'
,而不是将其转换为DateTime实例。