프로젝트 개발을 위해 Symfony2.0을 사용하게 되었는데 몇 가지 질문을 드리고 싶습니다.
某草草
某草草 2017-05-16 16:46:03
0
1
509

저는 프로젝트 개발을 위해 Symfony1.4+propel을 사용했는데, 지금은 Symfony2.0으로 전환했는데, 교리를 사용한 적은 없지만 공식 기본값은 교리이며 Propel을 제거합니다.
1. 교리를 사용하면 어떤 이점이 있습니까? 소품과 관련하여. 프로젝트는 시스템 측면입니다.
2. prop을 사용할 때 group by가 그다지 유용하지 않다는 것을 알았습니다. 그렇죠?
3. 교리는 다대다 M:N 관계를 어떻게 처리합니까?

또한 교리와 관련하여 발생할 수 있는 문제를 게시하고 다른 사람들에게도 참고합니다:
1. 문서 오류입니다. 서명되지 않은 속성과 기본 속성 등의 추가 필드 옵션을 구성하려면 옵션을 사용하세요.
2. 외래 키는 unsigned 또는 default를 지정할 수 없습니다
3. 테이블 관계는 비식별 관계입니다

감사합니다!

某草草
某草草

모든 응답(1)
刘奇

"표준" Doctrine에서 지원하는 기능은 PDO에서 지원하는 모든 관계형 데이터베이스(MySQL, PostgrelSql 등)에서 지원하는 기능의 모음입니다. 즉, A는 지원하지만 B는 지원하지 않는 것은 지원되지 않습니다. 예, 하지만 Doctrine은 확장성이 좋고 타사 코드가 풍부합니다. Google에서 Doctrine+Extensions를 검색하는 방법을 모르겠습니다.

Doctrine의 다대다 지원은 꽤 훌륭하고 충분합니다.

Symfony 2에서는 Propel을 계속 사용할 수 있습니다. 공식 웹사이트 문서에는 전용 장이 있습니다.

Doctrine과 Propel은 모두 좋습니다(데이터베이스 패키지를 직접 작성할 수도 있고, 좋은 동지가 될 수도 있습니다). 비교해야 한다면 몇 가지 객관적인 차이점을 언급하는 것이 좋습니다.

  1. Doctrine은 Data Mapper + Proxy 모드이고 Propel은 Active Record 모드입니다(이것은 철학적인 질문입니다).
  2. Doctrine의 커뮤니티가 더욱 활발해졌습니다.
  3. Symfony 2는 Doctrine의 Common 라이브러리를 사용하여 주석 기반 종속성 주입(DI)을 구현합니다.
  4. Doctrine은 더 현대적이며(2.x) PHP 5.3+에 대한 더 나은 기능 지원을 제공하지만 Propel도 이를 따라잡고 있습니다.
  5. 위에서 언급한 것처럼 unsigned 기능은 데이터베이스 전반에 걸쳐 사용할 수 없으므로 당연히 기본적으로 지원되지 않습니다. 하지만 필요한 경우 이를 수행할 수 있는 방법이 많기 때문에 이 답변에서는 다루지 않겠습니다.

Default는 데이터베이스를 교차할 수 있는 속성이 아니지만 Doctrine의 Entity 클래스에서 매핑된 멤버 변수에 대한 기본값을 정의할 수 있습니다.

Doctrine의 약속은 라이브러리 전반에 걸쳐 사용될 수 있다는 것입니다. 이런 관점에서 Doctrine은 여전히 ​​사람들을 편안하게 만들 수 있습니다. 결국 PostgreSql이나 SQLite를 사용하는 사람들이 여전히 많기 때문에 일관성을 강요하기 위해 MySQL 사고방식을 사용하지 마십시오.

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