symfony doctrine type datetime expected format y-m-d h:i:s

时间:2014-03-12 08:58:34

标签: php symfony datetime doctrine-orm doctrine

当我尝试使用doctrine从数据库中选择一些项目时,我在symfony中遇到了问题。

我跑了这个:

$allOrders = $em->getRepository('MyBundle:Dieta')->findBy(array('diet_status'=>'active'));
var_dump($allOrders);

我收到以下错误:

  

无法将数据库值“2014-03-03”转换为Doctrine Type   约会时间。预期格式:Y-m-d H:i:s

当我在数据库中插入日期时,我这样做:

$format = 'd/m/Y';
$date = \DateTime::createFromFormat($format, $_POST['dietStartDate']);
$dietStartDate = $date->format('Y-m-d H:i:s');
$dietStartDate = new \Datetime($dietStartDate);

$timestamp = strtotime(str_replace('/', '-', $_POST['dietStartDate']));
$timestamp7 = strtotime('+7 days', $timestamp);
$datetime = date("Y-m-d H:i:s", $timestamp7);
$dietDateEnd = new \Datetime($datetime);

$dietStartDate$dietDateEnd插入数据库中的日期时间列。在doctrine.yml中我也将它声明为datetime。

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

从值"2014-03-03"开始,您的数据库列类型似乎是date,而不是datetime

运行php app/console doctrine:schema:update以检查是否有更改。

答案 1 :(得分:0)

我遇到了同样的问题,我通过添加以下代码解决了它 之所以得不到解决,是因为postgres与0不同时会注册微秒,这会产生isse

use Doctrine\DBAL\Types\Type;

Type::overrideType('datetime', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('datetimetz', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('time', 'Doctrine\DBAL\Types\VarDateTimeType');

Type::overrideType('datetime_immutable', 'Doctrine\DBAL\Types\VarDateTimeImmutableType');
Type::overrideType('datetimetz_immutable', 'Doctrine\DBAL\Types\VarDateTimeImmutableType');
Type::overrideType('time_immutable', 'Doctrine\DBAL\Types\VarDateTimeImmutableType');

您可以在此处阅读更多内容 https://www.doctrine-project.org/projects/doctrine-dbal/en/2.10/reference/known-vendor-issues.html