Доктрина Добавить столбец в событии SchemaCreateTablePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Доктрина Добавить столбец в событии SchemaCreateTable

Сообщение Anonymous »

У меня есть некоторые связи между таблицами 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) 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 Doction:schema:update --dump-sql, я не вижу свой запрос.

Подробнее здесь: https://stackoverflow.com/questions/605 ... able-event
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»