2013-03-20 2 views
3

내 응용 프로그램이 복잡해지고 있으며 ORM 엔터티에서 뷰로 직접 이동하는 것이 불충분하다는 것을 알게되었습니다.모델에 ORM 엔터티를 추가하는 방법

모델을 추가하고 싶습니다. 그들은 ORM 엔티티에서 데이터를 가져 오지만 일부 기능을 추가합니다. 예를 들어 내 User ORM 엔티티는 endDate 속성과 trial 속성을가집니다. 나는

  1. endDate 오늘보다 이후 보장하는 isExpired 방법을 추가 할 및
  2. trial은 false입니다

(이 간단한 예입니다. 내 요구 사항이 훨씬 더 복잡하다 따라서 논리 외부로 논리를 이동하고 싶습니다.)

올바른 방법은 무엇입니까? 내가 UserModel 클래스를 만든다고 해보자. User 개체는 다른 속성/메서드 외에도 해당 클래스의 속성이됩니까? 하나의 쿼리로 모든 객체를 가져올 수있는 교리의 능력을 보존 할 수 있습니까?

답변

1

isExpired() 메서드를 엔티티에 직접 추가하면 어떨까요? 아무도 엔티티에 DB 항목 만 저장하도록 강요하지 않습니다.

+0

이렇게하면 지속성이 떨어지지 않습니까? –

+0

또 하나의 주름이 있습니다. 이 특별한 경우에는 [Native SQL] (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html)을 사용하고 있습니다. 각 개체에 대한 데이터 그래서, 이미 '래퍼 클래스'가 있습니다 (이것이 유일한 방법이라고 생각합니다). 내 실체의 새로운 소품/메소드를 래퍼 클래스로 가져갈 수 있습니까? –

+0

Elnur의 제안은 영속성을 전혀 망치지 않습니다. 정보 기능을 생성하기 위해 양식의 엔티티 데이터를 처리하는 것입니다. 랩퍼로도 작업해야하며, 부모 호출이나 기타 등등을 제공하십시오. 나는이 기법을 꽤 사용한다. – Lighthart

관련 문제