php - update - Génération d'une entité unique à partir d'une base de données existante à l'aide de symfony2 et de doctrine




symfony update entity from database (6)

Aucune des réponses ne me convenait parfaitement avec Symfony 3 . J'ai fini par faire:

php bin/console doctrine:mapping:import --force MyBundle xml --filter="MyTable"

php bin/console doctrine:mapping:convert annotation ./src --filter="MyTable"

php bin/console doctrine:generate:entities MyBundle:MyTable --path ./src

Est-il possible de générer une seule entité à partir de la base de données à l'aide de l'outil de console Symfony2?

Au milieu du codage, j'ai dû ajouter une table et des modifications ont été apportées aux classes d'entités existantes. Donc je ne veux pas que toutes mes entités soient régénérées.

Toute suggestion sera appréciée!


Commentaire @ fyrye qui est actuellement caché mérite le crédit, voulait ajouter cela afin qu'il ne soit pas manqué par d'autres. C'est l'approche:

/** @var \Doctrine\DBAL\Connection $connection */
$config = $connection->getConfiguration();

// for excluding an specific table
$config->setFilterSchemaAssetsExpression('/^(table_to_reverse_engineer_1|table_to_reverse_engineer_2).*$/');

source: https://coderwall.com/p/jofhdw/doctrine-tell-which-tables-to-work-with

J'avais des problèmes lors de l'exécution de la commande suivante en raison du grand nombre de tables héritées mal définies

php ./vendor/bin/doctrine orm:convert-mapping --force --from-database annotation ./src/UI/Entity/

Il s'avère que l'indicateur --filter filtre uniquement après avoir lu les métadonnées de toutes vos tables qui, si elles n'ont pas de clés primaires ou ont un autre problème, provoqueront l'échec de la commande


J'ai eu exactement le même problème avec Symfony 2.4 et MySQL.

Aucune des solutions de contournement affichées ci-dessus n'a fonctionné pour moi.

J'ai fini par créer une nouvelle base de données avec les tables que je veux extraire (cela peut être facile car MySQL fournit le script de création).

Puis changé la connexion à cette nouvelle base de données et exécuté la commande d'extraction d'entité à partir de là.

Semble être un peu radical, mais je ne vais pas créer les entités à la main.

J'espère que cela pourra aider


J'ai eu le même problème, vous devez faire comme ceci:

php app/console doctrine:mapping:convert metadata_format \
    ./src/App/MyBundle/Resources/config/doctrine \
    --from-database \
    --filter="Yourtablename"

alors

php app/console doctrine:mapping:import AppMyBundle \
    metadata_format --filter="Yourtablename"

metadata_format est la fin du fichier que vous voulez générer (par exemple xml, yml, annotation)

et enfin

php app/console doctrine:generate:entities AppMyBundle --no-backup

Comme cette doctrine chargera seulement l'entité dont vous avez besoin. Attention au filtre, il faut utiliser le CamelCase!

J'espère que ceci vous aidera


N'a fonctionné aucun de ceux-ci pour mon symfony 3.3. Je viens donc de créer une copie du répertoire et de générer à nouveau toutes les entités du répertoire de copie. Ensuite, j'ai copié les entités requises dans mon répertoire d'origine.

--filter ne fonctionne pas en raison de ce problème https://github.com/symfony/symfony/issues/7717


Pour la troisième commande, la doctrine a continué à régénérer tous les fichiers Entity. En ajoutant le nom de l'entité après le paquet, il n'a généré que l'entité qui m'intéressait.

php app/console doctrine:generate:entities AppMyBundle:Yourtablename --no-backup




doctrine