Я делаю приложение с slim 4 и использую doctrine.
Я создал несколько сущностей и проверяю сопоставление с помощью doctrine, а затем обновил схему с помощью doctrine. Он хорошо создал таблицы в моей базе данных ... Но когда я делаю еще одну схему проверки, он продолжает говорить мне, что база данных не синхронизирована c. Вот генерируется sql doctrine: ALTER TABLE reserver CHANGE jour jour datetime NOT NULL, CHANGE debut debut datetime NOT NULL, CHANGE fin fin datetime NOT NULL;
Когда я выполняю его через Phpmyadmin, все идет хорошо, но я все равно получаю ошибку syn c. Была ошибка с mariaDb и полем 'null', но я попробовал с базой данных mysql и получил тот же результат ...
Единственная особенность c, которую я сделал, - это введение пользовательского doctrine тип для использования CARBON в сущности и datetime в базе данных.
И угадайте, что ... я сделал это для журнала / дебюта и финиша ...
<?php
namespace App\Library\Types;
use Carbon\CarbonImmutable;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Platforms\AbstractPlatform;
/**
* Type Doctrine: Datetime <---> Carbon.
*/
class CarbonType extends Type
{
const CARBON = 'carbon';
// modify to match your type name
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
{
// return the SQL used to create your column type. To create a portable column type, use the $platform.
return 'datetime';
}
public function convertToPHPValue($value, AbstractPlatform $platform)
{
// This is executed when the value is read from the database. Make your conversions here, optionally using the $platform.
return CarbonImmutable::parse($value);
}
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
// This is executed when the value is written to the database. Make your conversions here, optionally using the $platform.
return $value->toDateTimeString();
}
public function getName()
{
return self::CARBON;
}
}
База данных не синхронизируется, но остальное работает нормально! Что я сделал не так ??