Symfony 两个没有集合的实体
我有以下问题。一个名为“user”的实体与实体“address”具有多对多关系。我想创建一个表单“UserType”。在这个表单中,我将精确地显示地址实体。一个地址用于私人地址信息,一个地址用于商业地址信息 我通过集合实现了这一点,我可以添加和删除许多地址集合Symfony 两个没有集合的实体,symfony,Symfony,我有以下问题。一个名为“user”的实体与实体“address”具有多对多关系。我想创建一个表单“UserType”。在这个表单中,我将精确地显示地址实体。一个地址用于私人地址信息,一个地址用于商业地址信息 我通过集合实现了这一点,我可以添加和删除许多地址集合 但是,如何在创建或编辑没有集合的用户时准确显示两个地址实体?有几种方法。一种是向用户实体添加get/set privateAddress和businessAddress方法,然后确保初始化集合。比如: $user = new User(
但是,如何在创建或编辑没有集合的用户时准确显示两个地址实体?有几种方法。一种是向用户实体添加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
这两种方法都有效。第二种方法更加灵活,避免了向用户对象添加其他方法的需要。当然,您可能无论如何都需要这些方法