У меня есть некоторые отношения таблиц 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
, я не вижу своего запроса.