У вас есть рациональные проблемы в вашем отображении.Вы должны использовать шаблон parent-children внутри Person
, а не CompanyPerson
.CompanyPerson
здесь, это совместное юридическое лицо.Здесь сохраняются такие вещи, как:
$dateAdded
: дата, на которую было установлено соотношение между Company
и Person
и Status
.
Персона
class Person
{
/**
* @ORM\Column(type="string", length=45, nullable=true)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="CompanyPerson", mappedBy="person", cascade={"persist"})
* @var ArrayCollection
*/
private $companypersons;
/**
* @ORM\ManyToOne(targetEntity="Person", inversedBy="childrens")
*/
private $parent;
/**
* @ORM\OneToMany(targetEntity="Person", mappedBy="parent")
*/
private $children;
}
Примечание, чтобы сохранить children
без s
, так как оно уже во множественном числе.
Также имейте в виду, чтоиспользуйте cascade
операции по определению отображения на обратной стороне ассоциации.Таким образом,
class CompanyPerson
{
/**
* @ORM\ManyToOne(targetEntity="Company", inversedBy="companypersons", cascade={"persist"})
*/
private $company;
/**
* @ORM\ManyToOne(targetEntity="Person", inversedBy="companypersons", cascade={"persist"})
*/
private $person;
}
должно быть
class CompanyPerson
{
/**
* @ORM\ManyToOne(targetEntity="Company", inversedBy="companypersons")
*/
private $company;
/**
* @ORM\ManyToOne(targetEntity="Person", inversedBy="companypersons")
*/
private $person;
}
Ваш вопрос
Чтобы обойти так называемую сложную форму!Вы можете использовать mapped=false
атрибут настройки в ваших полях.используя это, вы можете сообщить Symfony, что это поле не сопоставлено со свойством целевой сущности вашей формы.
В вашем случае у вас есть форма CompanyType
(с Company
в качестве целевой сущности)и хочу создать все эти вещи за один раз!Таким образом, вы можете добавить несопоставленные поля в форму и захватить тему внутри вашего контроллера и анализировать тему по своему усмотрению.
Используя этот метод, вы должны самостоятельно создавать совместные объекты (например, Company-Person) (снова внутриваш контроллер).