Я работаю над веб-приложением на Laravel, которое использует Doctrine.База данных хранится в SQL Express 2017.
У меня была проблема с типом DateTime, как указано в документации , когда я выполняю SELECT.
Не удалось преобразовать значение базы данных "2018-11-19 16: 19: 44.923" в тип доктрины datetimetz.Ожидаемый формат: Ymd H: i: su P
Чтобы решить эту проблему, я создал свой собственный тип DateTime после некоторого исследования.
<?php
namespace App\Doctrine\Types;
use Doctrine\DBAL\Types\DateTimeType;
use Doctrine\DBAL\Platforms\AbstractPlatform;
class MsDateTime extends DateTimeType
{
private $dateTimeFormatString = 'Y-m-d H:i:s.u';
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
return ($value !== null) ? $value->format($this->dateTimeFormatString) : null;
}
}
Затем я переопределяю тип по умолчанию:
Type::overrideType(Type::DATETIMETZ, 'App\Doctrine\Types\MsDateTime');
Теперь я могу отображать данные, но не могу вставить новые строки: Исключительная ситуация при выполнении таблицы INSERT INTO (row1, row2, active, date_created, timestamp) VALUES (?,?,?,?,?) 'с параметрами ["Тест", "Тест", 1, "2018-11-20 16: 12: 11.349245", "2018-11-20 16: 12: 11.349250"]
Я хотел бы знать, почему я не могу хранить новые строки.Если у вас есть какие-либо исправления для Doctrine с SQLServer, я был бы очень признателен!
Мы также используем Python с SQL Alchemy для запросов к той же базе данных, и у нас нет такой проблемы.