我已经按照http://doctrine-orm.readthedocs.org/en/latest/cookbook/working-with-datetime.html的说明,创建了一个自定义的Doctrine类型。
以下是代码:
问题在于我运行
以下是代码:
<?php
namespace XXX\Bundle\XXXBundle\Doctrine\Type;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\ConversionException;
use Doctrine\DBAL\Types\DateTimeType;
class UTCDateTimeType extends DateTimeType
{
static private $utc = null;
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
if ($value === null) {
return null;
}
$value->setTimezone(new \DateTimeZone('UTC'));
$dbDate = $value->format($platform->getDateTimeFormatString());
return $dbDate;
}
public function convertToPHPValue($value, AbstractPlatform $platform)
{
if ($value === null) {
return null;
}
$val = \DateTime::createFromFormat(
$platform->getDateTimeFormatString(),
$value,
(self::$utc) ? self::$utc : (self::$utc = new \DateTimeZone('UTC'))
);
if (!$val) {
throw ConversionException::conversionFailed($value, $this->getName());
}
return $val;
}
}
问题在于我运行
app/console doctrine:migrations:diff
时,即使我已经迁移过了,它仍然会生成新的迁移,并且内容总是相同的。例如:$this->addSql('ALTER TABLE Availability CHANGE start start DATETIME NOT NULL, CHANGE end end DATETIME NOT NULL, CHANGE rrule rrule LONGTEXT DEFAULT NULL, CHANGE created created DATETIME NOT NULL, CHANGE updated updated DATETIME NOT NULL');
requiresSQLCommentHint
不会自动解决问题。Diff
将忽略此更改。您必须手动添加注释。 我已为此创建了一个工单:http://www.doctrine-project.org/jira/browse/DBAL-1193 - vbence