Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Доктрина 2:Не може да се актуализира колоната DateTime на SQL Server 2008apm

Сблъсках се с този проблем с Doctrine 2.5 и SQL Server 2012. Проблемът е, че полето на базата данни е тип DATETIME , но doctirne поддържа само DATETIME2 на SQLServer2008Platform и нагоре.

Не трябва да редактирате файлове в директорията на вашия доставчик. Правилният отговор е да създадете персонализиран тип:Доктрина Персонализирани типове съпоставяне . В моя случай разширих текущия DateTimeType:

<?php

namespace AppBundle\Doctrine\Type;

use Doctrine\DBAL\Types\DateTimeType;
use Doctrine\DBAL\Platforms\AbstractPlatform;

class DateTime extends DateTimeType
{
    private $dateTimeFormatString = 'Y-m-d H:i:s.000';

    public function convertToDatabaseValue($value, AbstractPlatform $platform)
    {
        return ($value !== null)
            ? $value->format($this->dateTimeFormatString) : null;
    }

}

И след това в Symfony config.yml:

    types:
      datetime: AppBundle\Doctrine\Type\DateTime


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете се към SQL сървър с удостоверяване на Windows от Linux машина чрез JDBC

  2. TSQL Shred XML - Това правилно ли е или има по-добър начин (новак @ раздробяване на XML)

  3. Как да конвертирате данни в json формат в SQL Server 2008?

  4. изберете един ред за ID

  5. nvarchar(max) срещу NText