Vielleicht noch zur Vollständigkeit (Getestet in meinem Development-System).
Ich weiß nicht, ob das der sauberste Weg ist (ich bezweifel es etwas), optional kann man auch die bisherigen Tabellen manuell hinzufügen.
In meiner Dev-Umgebung habe ich es so gemacht:
PHP-Code:
<?php
// src/EventListener/SchemaListener.php
namespace Agonyz\ContaoTestBundle\EventListener;
use Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs;
class SchemaListener
{
public function __invoke(GenerateSchemaEventArgs $event)
{
$schema = $event->getSchema();
$entityManager = $event->getEntityManager();
foreach($entityManager->getConnection()->createSchemaManager()->listTables() as $table) {
if(str_starts_with($table->getName(), 'tl_')) {
continue;
}
$tableToKeep = $schema->createTable($table->getName());
foreach($table->getColumns() as $column) {
$tableToKeep->addColumn($column->getName(), $column->getType()->getName());
}
}
}
}
Und in der services.yml:
PHP-Code:
services:
_defaults:
autoconfigure: true
agonyz.listener.doctrine_schema:
class: Agonyz\ContaoTestBundle\EventListener\SchemaListener
arguments:
- '@contao.doctrine.dca_schema_provider'
tags:
- { name: doctrine.event_listener, event: postGenerateSchema }
Natürlich kann das alles unter /src/ abgelegt werden, um es nicht als eigenes Bundle zu konfigurieren.
Lesezeichen