P粉1868974652023-08-27 17:01:05
フラグ readOnly=true
でマークされたエンティティは、更新について追跡されなくなりましたが、ドキュメント で説明されているように、行の挿入または削除は引き続き可能です。
doctrine:schema:update コマンドでは、引き続きテーブルを考慮してスキーマを更新します。
「スキーマ マネージャー更新の実行時に Doctrine2 エンティティを無視する」 スキーマ更新でエンティティを無視するための有効なオプションは 3 つあります。
P粉4550931232023-08-27 14:04:02
schema_filter
はエンティティを「フィルタリング」するために作成されたものではなく、教義認識から DB テーブルをフィルタリングするために作成されました。
これは例です:
view_booking_by_customer_per_year というカスタムの生の PHP cron ジョブから更新されるテーブルを手動で作成すると仮定すると、このテーブルはプロジェクト内のコードでは使用されませんが、データ分析に使用されます。
これは典型的な例ですが、スキーマを更新するたびにこのようなクエリを生成する必要はありません。
したがって、
schema_filter を使用すると、検証および更新プロセスでこのテーブルを無視するように Doctrine に指示できます。
生の SQL を使用してランダム テーブルを作成し、
doctrine:schema:validate
データベースが同期していません エラーが表示されます。
schema_filter に入れると、エラーは発生しなくなります。
これは
doctrine:migration:diff
doctrine:schema:update で機能します
schema_ignore_class
Schema Manager update の実行時に Doctrine2 エンティティを無視する
データベースの変更を実行するには、doctrine:migration:diff を使用し、次に
doctrine:migration:merge を使用することを強くお勧めします。ローカル開発では問題ありませんが、運用環境では非常に悪い習慣です。
https://symfony.com/bundles/DoctrineMigrationsBundle/current/index.html