2014-09-27 2 views
0

У меня есть эта сущность:Как установить DISCR генератор арматуры Nelmio Alice

/** 
* @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; 

} 

И я использую Doctrine Table Inheritance здесь, поэтому я хочу, чтобы сделать набор тестов с использованием Nelmio Alice для этого объекта, как я должен сделка с discr колонка? Я имею в виду, как я говорю Алисе, какой тип использовать? Я попытался это:

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 не является столбцом на Person лица, любые советы?

ответ

1

Это интересный кромка. Я вижу два возможных решения:

  1. Вы добавляете свойство discr, чтобы его можно было установить, но я не знаю, сделает ли это доктрину счастливой или нет.
  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 Я подтверждаю, что второй подход выполнил эту работу, и я получил ожидаемый результат, спасибо, что напишу небольшое исправление в документах, как вы предложили, и попытайтесь добавить эту часть. Можете ли вы взглянуть на [это] (http://stackoverflow.com/questions/26104851/how-to-pass-faker-data-result-to-a-custom-function)? Это еще один интересный, и он не документирован – ReynierPM

Смежные вопросы