2015-01-07 3 views
1

Doctrine2에서 수퍼 클래스 매핑이 어떻게 작동하는지 알아 내려고하고 있습니다. 몇 가지 예제가 있지만, xml 매핑을 사용하여 만들었습니다. 내 엔티티 그리고 데이터베이스 스키마. 'entity'태그에 'extends'매개 변수를 보여주는 예제가 하나 있지만 현재 스키마에서 지원되지 않는 것으로 나타났습니다.doctrine에서 무엇을 확장 할지를 지정하는 방법 xml 매핑을 사용하는 mappedsuperclass

매핑 된 수퍼 클래스를 확장해야하는 XML 드라이버를 어떻게 알 수 있습니까?

답변

0

어떻게 매핑 된 슈퍼 클래스를 확장해야하는지 클래스는 XML 드라이버를 말하는 가야합니까 SW?

당신은 당신은 단순히 추상 클래스를 만들 수 있습니다

을 :) 필요가 없습니다가 (이름을에게 My\First\BaseClass를 할 수 있습니다) 및 XML에 매핑 된 슈퍼 클래스를 정의

<?xml version="1.0" encoding="UTF-8"?> 
<doctrine-mapping 
    xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping 
     http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd" 
> 

    <mapped-superclass name="My\First\BaseClass"> 

     <!-- fields, etc --> 

    </mapped-superclass> 

</doctrine-mapping> 

다음은 엔터티가 이 매핑 된 슈퍼 클래스를 확장합니다. 매핑 된 수퍼 클래스를 확장하는 Entity 클래스도 가질 수 있으며, 매핑 된 수퍼 클래스는 다시 다른 매핑 된 수퍼 클래스를 확장합니다.

요점은 : Doctrine은 클래스 상속을 기반으로 완전한 매핑 메타 데이터 집합을 결정하기 위해 모든 XML 매핑 파일을 탐색 할만큼 똑똑합니다. 그래프를 XML로 지정할 필요는 없습니다.

+0

기본적으로 나에게 답변을 준 교리 사이트 중 하나에 게시물이 있습니다. 설명은 닭고기/계란 구분선 이었기 때문에 XML 레이어에서 상속을 정의 할 수있는 지원을 남겨 두었고 관계를 정의하기 위해 주석이있는 PHP를 사용해야하므로 XML 대신 주석을 사용하도록 변경했습니다. 엔티티 자체를 사용하지 않고 명령 행 도구 – Scott

+0

에서 엔티티를 사용하는 것보다, 내가 겪고있는 문제는 '엔티티 생성'을 올바르게 수행하는 데 특정 문제가있었습니다. 이것은 xml 구성에서 지원되지 않는다고 말한 것입니다. 아마 여러분은 엔티티를 직접 만들거나 주석을 달지 않고 엔티티를 만들고 XML 설정 파일을 사용하여 스키마를 설명 할 수 있습니다. – Scott

+0

아! 엔티티를 수동으로 만드는 것은 실제로 내가 말하고자하는 것입니다. 상속을 사용하여 엔티티를 생성하는 것은 현재 사용자가 알 수있는 것처럼 지원되지 않지만 ml을 구현하는 것에 대해 몇 가지 대화가있었습니다. –