Symfony 两个没有集合的实体

Symfony 两个没有集合的实体,symfony,Symfony,我有以下问题。一个名为“user”的实体与实体“address”具有多对多关系。我想创建一个表单“UserType”。在这个表单中,我将精确地显示地址实体。一个地址用于私人地址信息,一个地址用于商业地址信息 我通过集合实现了这一点,我可以添加和删除许多地址集合 但是,如何在创建或编辑没有集合的用户时准确显示两个地址实体?有几种方法。一种是向用户实体添加get/set privateAddress和businessAddress方法,然后确保初始化集合。比如: $user = new User(

我有以下问题。一个名为“user”的实体与实体“address”具有多对多关系。我想创建一个表单“UserType”。在这个表单中,我将精确地显示地址实体。一个地址用于私人地址信息,一个地址用于商业地址信息

我通过集合实现了这一点,我可以添加和删除许多地址集合


但是,如何在创建或编辑没有集合的用户时准确显示两个地址实体?

有几种方法。一种是向用户实体添加get/set privateAddress和businessAddress方法,然后确保初始化集合。比如:

$user = new User();
$user->addAddress(new Address('Private'));
$user->addAddress(new Address('Business'));

$builder = $this->createFormBuilder($user);
$builder
    ->add('privateAddress',  new AddressFormType())
    ->add('businessAddress', new AddressFormType())
;
在创建具有多个子对象的对象时,我经常使用第二种方法。在这种方法中,将多个独立的对象放入一个数组中,然后在发布表单后将它们缝合在一起

$data = array(
    'user' => new User(),
    'privateAddress'  => new Address('Private'),
    'businessAddress' => new Address('Business'),
);
$builder = $this->createFormBuilder($data);
$builder
    ->add('user', new UserFormType())
    ->add('privateAddress',  new AddressFormType())
    ->add('businessAddress', new AddressFormType())
;
...
if ($form->isValid())
    // Stitch your object together then persist
这两种方法都有效。第二种方法更加灵活,避免了向用户对象添加其他方法的需要。当然,您可能无论如何都需要这些方法