Doctrine Добавить столбец на событиеSchemaCreateTable - PullRequest
1 голос
/ 04 марта 2020

У меня есть некоторые отношения таблиц ManyToMany.

Я хочу добавить новый столбец "create_at" автоматически.

После Symfony и Doctrine Документации, я устал от этого:

app / config / services_dev.yaml

[...]
    App\Event\Listener\ManyToManyListener:
        tags:
            - { name: doctrine.event_listener, event: onSchemaCreateTable }

app / src / Event / Listener / ManyToManyListener. php


[.....]

class ManyToManyListener implements EventSubscriber
{
    public function getSubscribedEvents()
    {
        return ['onSchemaCreateTable'];
    }

    public function onSchemaCreateTable(SchemaCreateTableEventArgs  $event)
    {
        $columns = $event->getTable()->getColumns();

        if (count($columns) <= 2 && !array_key_exists("created_at", $columns)) {
            $tableName = $event->getTable()->getName();
            $sql = "ALTER TABLE $tableName ADD COLUMN created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP;";
            $event->addSql($sql);
              //dump($sql);
        }
    }
}

Я могу сбросить свой SQL код внутри, он работает.

Я также пробовал этот код (внутри оператора if)

$event->getTable()->addColumn(
                "created_at",
                "datetime",
                ["default" => "CURRENT_TIMESTAMP"]
            );

Это никогда не выполнит SQL заявление. Например, пока php bin/console doctrine:schema:update --dump-sql, я не вижу своего запроса.

...