Symfony - “类DateTime的对象无法转换为字符串”持久化实体

时间:2017-08-11 17:47:16

标签: php symfony doctrine

我正在尝试使用教义来持久化实体,该实体具有日期属性,显然,这会产生错误。

这是在实体中声明属性的方式:

/**
 * @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();

在表格中,属性是日期类型。

这是错误屏幕: enter image description here

有什么想法吗?

2 个答案:

答案 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实例。