Doctrine Схема базы данных не синхронизирована - PullRequest
0 голосов
/ 03 августа 2020

Я делаю приложение с 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;
    }
}


База данных не синхронизируется, но остальное работает нормально! Что я сделал не так ??

...