2013-08-08 3 views
0

Doctrine을 사용하면 실제로 마법 메서드를 사용하지 않는 속성에 매핑 할 수 있습니까?Doctrine2 마법 메서드로 속성 정의하기

나는 YAML로 매핑을하고 있습니다.

예를 들어, "demo"라는 속성에 매핑하려는 경우 SomeClass :: $ demo가 실제로 존재하지 않았습니다. $ demo (및 getDemo() 및 setDemo())를 처리하고 그 밖의 다른 작업을 수행하려면 __get(), __set(), __isset() 및 __call()을 일부 조합해야합니다.

난이 설정을 시도했지만, 나는 오류 받고 있어요 : 내 마법의 방법을 그리워하는 원인이 ReflectionProperty 특별한 무언가가있는 경우

Uncaught exception 'ReflectionException' with message 'Property My\Bundle\DemoBundle\Entity\SomeClass::$demo does not exist' 

잘 모르겠어요를, 또는 아마 내가 마법의 기능을 잃어 버렸다면. 그러나 내가 알 수있는 한, ReflectionProperty는 그것들과 상호 작용해야한다.

아이디어가 있으십니까?

업데이트 : ReflectionProperty 생성자가 예외를 던질 것이다 매직 메서드를 트리거하지 않습니다 같은 추가 조사시

, 그것은 보인다.

Doctrine을 동적 속성에 매핑하는 방법을 알고있는 사람이 있습니까?

감사합니다.

업데이트 2 : 내가 달성하기 위해 노력하고있어 예에

.

기본적으로 나는 실제로 사용자 (역할, 암호, 소금, 사용자 이름 등)를 처리하는 데 필요한 기본 속성을 포함하는 일반 User 개체를 가지고 있습니다. 그러나이 객체를 확장하여 응용 프로그램 및 사용자 별 메타 데이터를 추가 할 수 있기를 원합니다.

포럼 번들을 만듭니다. 그러면 포럼과 함께 사용하기 위해 사용자와 관련된 메타 데이터를 동적으로 연결할 수 있습니다. 나는 User 번들에 직접 넣기를 원하지 않는다. User 번들의 유연성이 떨어지기 때문이다.

어떻게 든 새로운 데이터를 사용자에게 동적으로 주입 할 수 있다면 별도의 쿼리로로드 할 필요없이 사용자에게 단일 쿼리로 모두로드 할 수 있습니다. 나는 이것을 수행 할 다른 방법이 있다는 것을 알고있다. 나는 이미 탐구했고 심지어 제한된 범위까지 사용했다. 그러나 이러한 연관성을 동적으로 만들 수 있다면 훨씬 더 좋을 것입니다. 실제로 이러한 연관성은 도약하기가 어렵지는 않습니다.

+0

왜이 작업을 수행 하시겠습니까? – Phil

+0

자세한 내용은 내 질문에 업데이트되었습니다. – samanime

+0

데이터 레이어가이 문제를 처리하는 방법을 이미지화 할 수 없습니다.왜 단지 여분의 일대일 (one-to-many) 협회를 만들지 않는가? – Phil

답변

0

이러한 동적 속성을 검색 할 필요가 없다면 data라는 속성을 엔티티에 추가하고 교리 배열 유형에 매핑하면됩니다. 이제 당신의 위대한 일을하고 데이터 배열에 동적 속성을 저장하십시오.

두 번째 방법은 http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html입니다. 각 설치마다 관리자에게 사용자 정의 엔티티를 제공 할 수 있습니다.

하지만 동적 속성을 직접 쿼리 할 필요가없는 한 첫 번째 방법이 잘 작동합니다.

+0

첫 번째 방법을 이해하고 있다면 효과가 없을 것이라고 생각합니다. 글쎄, 그렇 겠지만, 이미 내가 한 일이야. 추가 쿼리가 필요합니다. 내 목표는 객체가 하나의 (왼쪽으로 합쳐진) 쿼리에 추가 관계를 모두로드하도록하는 것입니다. 내가 제공 한 링크를 살펴 보겠습니다. 아직 그 기사를 보지 못했습니다. – samanime

+0

Nope. 나는 분명하지 않다. 배열 유형으로 사용자 테이블에 하나의 열을 추가합니다. 원하는 추가 응용 프로그램 특정 데이터를 저장할 수 있습니다. 사용자 엔티티를 쿼리 할 때마다 데이터 배열이로드됩니다. 조인 또는 추가 쿼리가 필요 없습니다. – Cerad

+0

아, 그래, 그게 확실히 작동 할 수 있지만, 내가 실제로 사용하기를 원하는 접근 방식은 아니다. 나는 모든 것에 잘 정의 된 객체를 사용하는 것을 좋아한다. – samanime