複数のエンティティマネージャとのsymfonyの教義移行 -- php フィールド と symfony フィールド と doctrine-orm フィールド 関連 問題

symfony doctrine migrations with multiple entity managers












2
vote

問題

日本語

SaaSアプリケーションを作成しようとしています。この目的のために、次の公式ドキュメント php bin/console doctrine:migrations:diff --em=customer commandは、例外 The "--em" option does not exist. を実行します。 doctrine_migrations.yaml パラメータを em に変更できることを知っていますが、それはエンティティマネージャの数が増える可能性があることを考慮して解決策ではありません。

と一緒に行く回避策はありますか

doctrine.yml:

<事前> <コード> doctrine: dbal: default_connection: default connections: default: url: '%env(resolve:DATABASE_URL)%' driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 tenant: url: '%env(resolve:TENANT_DATABASE_URL)%' driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 wrapper_class: AppServiceConfigDatabaseConnection orm: auto_generate_proxy_classes: true default_entity_manager: default entity_managers: default: auto_mapping: false naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware mappings: Shared: mapping: true is_bundle: false type: annotation dir: '%kernel.project_dir%/src/Entity/Shared' prefix: 'AppEntityShared' alias: Shared tenant: connection: tenant auto_mapping: false naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware mappings: Tenant: mapping: true is_bundle: false type: annotation dir: '%kernel.project_dir%/src/Entity/Tenant' prefix: 'AppEntityTenant' alias: Tenant

<コード> AppServiceConfigDatabaseConnection クラスは、ConnectionのパラメータをFlyで変更できる単なるラッパーです。

英語

I'm trying to make SaaS application and for this purpose created multiple entity managers and corresponding connections by following official documentation but running php bin/console doctrine:migrations:diff --em=customer command results in exception The "--em" option does not exist.. I know that i can change doctrine_migrations.yaml parameter called em but that`s not a solution considering that number of entity managers can grow. Is there any workaround to go with?

doctrine.yml:

doctrine:     dbal:         default_connection: default         connections:             default:                 url: '%env(resolve:DATABASE_URL)%'                 driver: 'pdo_mysql'                 server_version: '5.7'                 charset: utf8mb4             tenant:                 url: '%env(resolve:TENANT_DATABASE_URL)%'                 driver: 'pdo_mysql'                 server_version: '5.7'                 charset: utf8mb4                 wrapper_class: AppServiceConfigDatabaseConnection      orm:         auto_generate_proxy_classes: true          default_entity_manager: default         entity_managers:             default:                 auto_mapping: false                 naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware                 mappings:                     Shared:                         mapping: true                         is_bundle: false                         type: annotation                         dir: '%kernel.project_dir%/src/Entity/Shared'                         prefix: 'AppEntityShared'                         alias: Shared              tenant:                 connection: tenant                 auto_mapping: false                 naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware                 mappings:                     Tenant:                         mapping: true                         is_bundle: false                         type: annotation                         dir: '%kernel.project_dir%/src/Entity/Tenant'                         prefix: 'AppEntityTenant'                         alias: Tenant 

AppServiceConfigDatabaseConnection class is just a wrapper that can change connection's parameters on fly.

</div
        

回答リスト

0
 
vote
vote
ベストアンサー
 

これまでの答えは次のとおりです。ドキュメントは時代遅れの、<コード> self.label.text = "" // Probably unnecessary self.label.text = "1337" self.label.setNeedsLayout() 0 v3.1はおそらく解決するでしょうが、それは self.label.text = "" // Probably unnecessary self.label.text = "1337" self.label.setNeedsLayout() 1 ライブラリに依存してv3.1をリリースする( issue )、およびこれまでの解決策のみがこのコマンドラッパーを使用して回避されるが、設定でTweaksが必要です(<コード> 998876612 のDoctrine Style ConfigsがDoctrine Style Configを期待し、Symfony'sではありません。 )

 

So far answer is: docs are outdated, doctrine/doctrine-migrations-bundle v3.1 will probably solve it, but it relies on doctrine/migrations library to release v3.1 (as mentioned in issue), and so far only solution is this workaround with command wrappers but it requires tweaks with configuration (YamlFile in article expects doctrine style config and not symfony's)

</div
 
 
0
 
vote

config.ymlを接続するたびに書く必要があり、 php bin/console doctrine:migration:diff --configuration=<path-to-config>/config.yml を使用してデータベースを移行できます。

 <コード> doctrine_migrations:     migrations_paths:         'DoctrineMigrations': 'src/MigrationsDefault'     connection: default   
 <コード> doctrine_migrations:     migrations_paths:         'DoctrineMigrations': 'src/MigrationsTenant'     connection: tenant   
 

You have to write for each Connection an config.yml and then you can use php bin/console doctrine:migration:diff --configuration=<path-to-config>/config.yml to migrate your database.

doctrine_migrations:     migrations_paths:         'DoctrineMigrations': 'src/MigrationsDefault'     connection: default 
doctrine_migrations:     migrations_paths:         'DoctrineMigrations': 'src/MigrationsTenant'     connection: tenant 
</div
 
 
 
 

関連する質問

17  動的データベース接続SymFony2  ( Dynamic database connection symfony2 ) 
My Symfony2プロジェクトには、メインデータベースと多くの子データベースがあります。各子データベースは各ユーザーに対して作成され、データベース認証情報はメインデータベースに保存されます。ユーザーがログインすると、ユーザー固有のデータベース認証情報がメ...

6  DoctrineのPrepdate Lifecycleイベントを使用して文書に変更された変更を保存する  ( Preserving changes made to a document with doctrines preupdate lifecycle event ) 
私は2つのライフサイクルイベントメソッドを含むイベントサブスクライバを持っています:準備席主義とプレパート。事前準備主義者は予想通りで働いています - 私は文書を変更し、そして文書を取得したときに変更は後で反映されます。しかし、プレプレートが期待通りに機能して...

20  Symfony2 / Doctrine、私のコントローラーにビジネスロジックを入れる必要がありますか?コントローラと複製コントローラ?  ( Symfony2 doctrine having to put business logic in my controller and duplicatin ) 
私のアプリケーションではやや複雑な価格設定メカニズムを持っています - ここにステージを設定するための私のビジネスルールのいくつかがあります(entitiesは太字): A 製品は、特定の顧客、ウェブサイト、または顧客のための独自の価格ポイントを持っている...

0  symfony 2 - 別のテーブルで新しく挿入されたレコードに基づくテーブルの更新  ( Symfony 2 updating a table based on newly inserted record in another table ) 
Symfony 2とDoctrine 2を使用して小さなフォーラムアプリケーションを作成しようとしています。私のフォーラム工学的エンティティは、last_postフィールド(OneTooneマッピング)を持っています。私はで新しい投稿を永続的に保持したとき ...

3  Doctrine2フェッチカウントもっと最適化され、速い方法またはZF2ライブラリ  ( Doctrine2 fetch count more optimized and faster way or zf2 library ) 
Doctrine2 and Zf2 を使用しています。<コード> count の行を取得する必要がある場合は、次の2つの方法があります。しかし、将来的な行は50K以上になるように、私の心配はより最適化され、より速い方法になるでしょう。任意の提案やカウントを...

1  XMLマッピングを使用してDoctrine 2の「クラステーブルの継承」の使い方  ( How to use class table inheritance in doctrine 2 with xml mapping ) 
Doctrine 2の「クラステーブル継承機能」をXMLマッピングで使用しようとしています(Symfony 2 PR 7)。 XMLスーパークラスのカタログ製品のXML定義: <事前> <コード> <?xml version="1.0" encoding=...

0  Neo4jとDoctrine2スタイルのラッパー  ( Neo4j and doctrine2 style wrapper ) 
最近、この Doctrine2 Style Neo4jラッパーでテストしています。以前にDoctrineを使ったことはありませんが、私はGitHubページとDoctrineのマニュアルから素晴らしい例から外れています。私はNEO4J-PHP-OGMライブラリを...

3  Doctrine 2 DQLエイリアス  ( Doctrine 2 dql alias ) 
スカラ水和を使用すると、INCTRINEがエンティティフィールド名に追加するエンティティのDQLエイリアスを取得する方法はありますか? ...

0  Doctrine2:未定義インデックス  ( Doctrine2 undefined index ) 
このDQLクエリを実行しようとすると: <事前> <コード> SELECT r, s FROM Rule r JOIN r.splash_page s WHERE r.active = 1 私がしようとしていることはただ2つのエンティティに参加し、このエラ...

0  SOAPClient、ArrayObject、ArryiteRatorを使用すると、Zend Frameworkのエラーが発生します。  ( Using soapclient arrayobject arrayiterator causes error in zend framework ) 
私は私のエンティティでいくつかの役立つ方法に取り組んでいます。 <事前> <コード> private function setApi($api_address,$api_username,$api_password){ $this->api_addr...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有