Guten Abend,
ich habe eine Lösung für das Problem gefunden. Ob weitere Probleme entstehen, kann ich noch nicht sagen. Werde mich aber melden, falls ich auf welche stoßen sollte.
Meine ersten Tests funktionieren jedoch ohne Probleme. Ob dies eine saubere Lösung ist, darf jeder für sich entscheiden
Und zwar wird ein EventListener benötigt, der die doppelt definierten Tabellen wieder raus haut.
1. Den Doctrine Event-Listener "postGenerateSchemaTable" registrieren:
Acme\TestBundle\Resources\config\services.yml
Code:
services:
acme.post_generate_schema_table:
class: Acme\TestBundle\EventListener\PostGenerateSchemaTable
tags:
- {name: doctrine.event_listener, event: postGenerateSchemaTable }
2. Die Klasse erstellen:
Acme\TestBundle\EventListener\PostGenerateSchemaTa ble.php
PHP-Code:
<?php
namespace Acme\TestBundle\EventListener;
use Doctrine\ORM\Tools\Event\GenerateSchemaTableEventArgs;
/**
* Class PostGenerateSchemaTable
* @package Acme\TestBundle\EventListener
*/
class PostGenerateSchemaTable
{
/**
* @var EntityManager
*/
private $entityManager;
/**
* @var Array
* Definition of the entities used inside your contao application
* (should preferably be outsourced)
*/
private $ignoredEntities = [
'Acme\TestBundle\Entity\Member', // -> tl_member
'Acme\TestBundle\Entity\Foo',
'Acme\TestBundle\Entity\Bar',
];
/**
* Remove ignored tables / entities from schema
*
* @param GenerateSchemaTableEventArgs $args
*/
public function postGenerateSchemaTable(GenerateSchemaTableEventArgs $args)
{
$this->entityManager = \System::getContainer()->get('doctrine.orm.entity_manager');
$schema = $args->getSchema();
$databaseName = $this->entityManager->getConnection()->getDatabase();
$ignoredTables = [];
foreach ($this->ignoredEntities as $entityName) {
$ignoredTables[] = $databaseName . '.' . $this->entityManager->getClassMetadata($entityName)->getTableName();
}
foreach ($schema->getTableNames() as $tableName) {
if (in_array($tableName, $ignoredTables)) {
// remove table from schema
$schema->dropTable($tableName);
}
}
}
}
Credits gehen definitiv an http://kamiladryjanek.com/en/ignore-...pdate-command/ - obwohl es nicht in diesem Fall nicht wie dort beschrieben funktioniert.
BG
Lesezeichen