2014-09-27 6 views
0

Nelmio 앨리스 고정 발생기에 discr 설정 방법 :나는이 엔티티가

/** 
* @ORM\Entity 
* @ORM\Table(name="person") 
* @ORM\InheritanceType("JOINED") 
* @ORM\DiscriminatorColumn(name="discr", type="string") 
* @ORM\DiscriminatorMap({ 
*  "natural" = "NaturalPerson", 
*  "legal" = "LegalPerson" 
* }) 
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false) 
*/ 
class Person { 
    use IdentifiedAutogeneratedEntityTrait; 

    /** 
    * Hook timestampable behavior 
    * updates createdAt, updatedAt fields 
    */ 
    use TimestampableEntity; 

    /** 
    * @ORM\Column(name="description", type="string", length=250, nullable=false) 
    */ 
    protected $description; 

    /** 
    * @ORM\Column(name="contact_person", type="string", length=250, nullable=true) 
    */ 
    protected $contact_person; 

    /** 
    * @ORM\Column(name="person_type", type="integer", nullable=false) 
    */ 
    protected $person_type = 1; 

    /** 
    * @ORM\OneToMany(targetEntity="Orders", mappedBy="person") 
    * */ 
    protected $orders; 

    /** 
    * @ORM\Column(name="deletedAt", type="datetime", nullable=true) 
    */ 
    protected $deletedAt; 

} 

그리고 내가 여기 교리 테이블 상속을 사용하고 내가 어떻게해야 그 실체에 대한 Nelmio Alice를 사용하여 테스트 스위트를 만들고 싶어 discr 열을 처리 하시겠습니까? 앨리스 한테 사용할 타입을 어떻게 말합니까? Person 실체, 어떤 조언에 열이 아닌

FrontendBundle\Entity\Person: 
    Person{1..10}: 
     description: <text(15)> 
     contact_person: <text(75)> 
     person_type: <randomElement(array('1','2'))> 
     discr: <randomElement(array('natural','legal'))> 

그러나 discr 때문에 작동하지 않습니다 : 나는 이것을 시도?

답변

1

흥미로운 사례입니다. 두 가지 가능한 해결책을 볼 수 있습니다 :

  1. 앨리스가 설정할 수 있도록 속성 discr를 추가했지만 doctrine을 행복하게 만들지는 모르겠습니다.
  2. 는 기업 자신의 두 가지 유형을 만들 즉

    FrontendBundle\Entity\NaturalPerson: 
        Person{1..5}: 
         description: <text(15)> 
         contact_person: <text(75)> 
         person_type: <randomElement(array('1','2'))> 
    
    FrontendBundle\Entity\LegalPerson: 
        Person{6..10}: 
         description: <text(15)> 
         contact_person: <text(75)> 
         person_type: <randomElement(array('1','2'))> 
    

    또는 상속을 사용할 수 있습니다 짧게 유지하고 중복을 피하기 :

    FrontendBundle\Entity\Person: 
        person (template): 
         description: <text(15)> 
         contact_person: <text(75)> 
         person_type: <randomElement(array('1','2'))> 
    
    FrontendBundle\Entity\NaturalPerson: 
        Person{1..5} (extends person): 
    
    FrontendBundle\Entity\LegalPerson: 
        Person{6..10} (extends person): 
    

이 작품의 아무도하시기 바랍니다 경우, github에보고하여 해결책을 찾도록하십시오.

+0

글쎄 나는 지금 당신의 첫 번째 해결책을 가지고 있지만 [이 문제로] 테스트 할 수는 없다. (http://stackoverflow.com/questions/26050825/setting-up-parameter-as-array-in-nelmio -alice-fixture-generator) 그 게시물을보고 내가 뭘 잘못하고 있는지 찾으려고 할 수 있습니까? 그 중 하나를 해결 한 후에 계속 해보고 싶습니다. 제발 할 수 있을까요? – ReynierPM

+0

안녕하세요 @Seldaek 두 번째 방법이 작업을 수행했음을 확인하고 예상 한 결과를 얻었으므로이 부분을 추가하고 시도하면서 문서에 대한 작은 수정을 작성하겠습니다. [this] (http://stackoverflow.com/questions/26104851/how-to-pass-faker-data-result-to-a-custom-function) 포스트도 살펴볼 수 있습니까? 흥미로운 또 하나의 것이고 그것은 거친 것으로 문서화되지 않았습니다. – ReynierPM