Symfony 5 - Doctrine의 Schema_filter가 제대로 작동하지 않습니다.
P粉002023326
P粉002023326 2023-08-26 18:16:28
0
2
526
<p>내 프로젝트에서 명령줄 <code>doctrine:schema:update --force</code>를 실행할 때 다음과 같은 두 항목을 무시하려고 합니다. </p> <pre class="brush:php;toolbar:false;">/*** @ORMEntity(readOnly=true) * @ORMTable(이름="view_tableau_de_bord")*/ 클래스 ViewTableauDeBord { //... }</pre> <p>내 Doctrine.yaml 구성 파일에서: </p> <pre class="brush:php;toolbar:false;">교리: dbal: default_connection: 기본값 사이: 기본: url: '%env(해결:DATABASE_URL)%' 드라이버: 'pdo_pgsql' 서버 버전: '12' 문자셋:utf8 Schema_filter: ~^(?!view_)~ # ...</pre> <p>Doctrine은 모든 엔터티를 계속 생성하며 내 보기는 <code>schema_filter</code>에 있습니다. 이에 대한 설명은 무엇입니까? 프로젝트에서 이 옵션을 사용한 것은 이번이 처음입니다. </p> <p>프로젝트 설정: </p>
  • 심포니 5.4.14
  • PHP 7.4.26
  • 교리: orm: 2.13.3
  • 이론/참고: 1.13.3
  • 교리/교리 패키지: 2.7.0
  • <li>교리/교리 마이그레이션 패키지: 3.2.2</li>
  • symfony/doctrine-bridge:5.4.14
  • 이론/데이터 장치: 1.5.3

P粉002023326
P粉002023326

모든 응답(2)
P粉186897465

플래그 readOnly=true로 표시된 엔터티는 더 이상 업데이트를 추적하지 않지만 문서에 설명된 대로 행을 삽입하거나 삭제할 수 있습니다.

doctrine:schema:update 명령은 스키마를 업데이트하기 위해 여전히 테이블을 고려합니다.

질문 "스키마 관리자 업데이트 실행 시 Doctrine2 엔터티 무시"에 대한 답변에는 스키마 업데이트에서 엔터티를 무시할 수 있는 3가지 유효한 옵션이 있습니다.

P粉455093123

스키마_필터

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

에 적합합니다.

schema_ignore_class

그러나 데이터베이스 내에서 엔터티 생성을 피하려면 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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿