我有一个问题,因为我使用的是现有数据库,在很多表中,他们使用带有多个外键的主键,还有一些包括Datetime。
所以当你这样做时:
/**
* @var \DateTime
*
* @ORM\Column(name="DT_DEBUT", type="date")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $dtDebut;
然后运行服务器会给你一个错误,例如:
Catchable Fatal Error:类DateTime的对象无法转换为字符串
然后我发现this post并尝试使用解决方案,但我仍然遇到问题。
这是MyDateTime.php
<?php
namespace AppBundle\Types;
use Doctrine\DBAL\Types\DateTimeType;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Platforms\AbstractPlatform;
/**
* Custom datatype to convert dateTime into a string
*/
class MyDateTimeType extends DateTimeType
{
const MYDATETIME = 'mydatetime';
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
{
return 'MyDateTime';
}
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$dateTime = parent::convertToPHPValue($value, $platform);
if ( ! $dateTime) {
return $dateTime;
}
return new MyDateTime('@' . $dateTime->format('Y-m-d h:i:s'));
}
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
return $value->format('Y-m-d h:i:s');
}
public function getName()
{
return self::MYDATETIME;
}
}
我做了另一个文件MyDateTime.php
<?php
namespace AppBundle\Types;
class MyDateTime extends \Datetime
{
public function __toString()
{
return $this->format('Y-m-d h:i:s');
}
}
最后,当然,我用config:
更新了我的config.xmltypes:
mydatetime: AppBundle\Types\MyDateTimeType
但我有这个新问题:
DateTime :: __ construct():无法解析位置8( - )的时间字符串(@ 1999-03-18 12:00:00):双时区规范
有人能帮帮我吗? :)