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 cronjob에서 업데이트되는 테이블을 수동으로 생성한다고 가정하면 이 테이블은 프로젝트의 코드에서는 사용되지 않지만 데이터 분석에는 사용됩니다.
이것은 일반적인 예입니다. 스키마를 업데이트할 때마다 이러한 쿼리를 생성하고 싶지는 않습니다.
으아악그래서 schema_filter
를 사용하면 교리의 유효성 검사 및 업데이트 프로세스에서 이 테이블을 무시하도록 지시할 수 있습니다.
원시 SQL을 사용하여 임의의 테이블을 생성하고 doctrine:schema:validate
를 사용해 보세요.
database is not in sync
오류가 표시됩니다.
Schema_filter에 넣으면 더 이상 오류가 발생하지 않습니다.
이것은 doctrine:migration:diff
and doctrine:schema:update
그러나 데이터베이스 내에서 엔터티 생성을 피하려면 Ernesto의 답변에 있는 링크에서 해당 항목을 찾을 수 있습니다.
으아악Doctrine 2.7 버전에서만 작동합니다. 여기에서 전체 예를 찾을 수 있습니다. 스키마 관리자 업데이트 실행 시 Doctrine2 엔터티 무시
데이터베이스 변경을 수행하려면 doctrine:migration:diff
then doctrine:migration:migrate
instead of doctrine:schema:update
를 사용하는 것이 좋습니다. 로컬 개발자에게는 괜찮지만 프로덕션 환경에서는 매우 나쁜 습관입니다.
https://symfony.com/bundles/DoctrineMigrationsBundle/current/index.html