Anpassung des Schema für Attribute

Die Datenbankeigenschaften für Attribute werden über den Schemamanager manipuliert - mehr dazu beim Schemamanager. Geprüft und ausgeführt werden die Änderungen beim Ablauf der DB-Migration - diese kann über den Contao-Manager oder über die Konsole angestoßen werden.

Im folgenden Beispiel wird das Feld des Attributes Langtext von TEXT (65535) auf MEDIUMTEXT (16777215) geändert - siehe Doctrine.

 1<?php
 2// src/AppBundle/EventListener/SchemaManagerListener.php
 3namespace AppBundle\EventListener;
 4
 5use MetaModels\Information\MetaModelCollectionInterface;
 6use MetaModels\Schema\Doctrine\DoctrineSchemaGeneratorInterface;
 7use MetaModels\Schema\Doctrine\DoctrineSchemaInformation;
 8
 9final class SchemaManagerListener implements DoctrineSchemaGeneratorInterface
10{
11    public function generate(DoctrineSchemaInformation $schema, MetaModelCollectionInterface $collection): void
12    {
13        if (!$schema->getSchema()->hasTable('mm_employees')) {
14            return;
15        }
16
17        $table = $schema->getSchema()->getTable('mm_employees');
18
19        $table->getColumn('vita')->setLength(16777215);
20    }
21}
1# src/AppBundle/Resources/config/services.yml
2services:
3  # SchemaManagerListener:
4  AppBundle\EventListener\SchemaManagerListener:
5    tags:
6      - { name: 'metamodels.schema-generator.doctrine', priority: -20 }