当我尝试从带有理论的数据库中选择某些项目时,我在symfony中遇到问题。
我运行这个:
$allOrders = $em->getRepository('MyBundle:Dieta')->findBy(array('diet_status'=>'active'));
var_dump($allOrders);
我收到以下错误:
无法将数据库值“ 2014-03-03”转换为学说类型约会时间。预期格式: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。
任何想法?
根据值"2014-03-03"
,您的数据库列类型似乎是date
,但不是datetime
。
运行php app/console doctrine:schema:update
检查是否有更改。
我有同样的问题,我已经通过添加下面的代码解决了问题得不到解决,因为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