Как установить диск в генераторе приборов 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, чтобы мы могли найти решение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]