Php Symfony表单句柄一对多为一对一

Php Symfony表单句柄一对多为一对一,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,在数据库中,联系人和联系人地址之间的关系是一对多的关系 我希望处理symfony表单,而不使用集合类型,因为它应该是用户的一对一 $builder->add( 'contactAddresses', new ContactAddressType() ); 出现以下错误: 属性“contactAddresses”或其中一个方法 “addContactAddress()”/“removeContactAddress()”, “setContactAddresses()”、“c

在数据库中,联系人和联系人地址之间的关系是一对多的关系

我希望处理symfony表单,而不使用集合类型,因为它应该是用户的一对一

$builder->add(
    'contactAddresses',
    new ContactAddressType()
);
出现以下错误:

属性“contactAddresses”或其中一个方法 “addContactAddress()”/“removeContactAddress()”, “setContactAddresses()”、“contactAddresses()”、“\uuu set()”或“\uu call()” 在类中存在并具有公共访问权限 “我的\Bundle\ContactBundle\Entity\Contact”

addContactAddress
方法存在于我的联系人实体中

public function addContactAddress(ContactAddress $contactAddress)
{
    $this->contactAddresses[] = $contactAddress;

    return $this;
}
试试这个:

$builder
    ->add('contactAddresses','entity', array(
        'class'=>'yourBundle:ContactAddress',
        'property'=>'propertyToDisplay'
    ));

是否使用CollectionType修复了它,并向其中添加了$contactAddress

建造商:

$builder->add(
    'contactAddresses',
    'collection', [
        'entity' => new ContactTypeAddress()
    ]
);
控制器:

$contact = new Contact();
$contact->addContactAddress(new ContactAddress()); // This line did fix my problem

$this->createForm(new MyContactType(), $contact);

您应该按如下方式添加它:

$builder->add('contactAddresses',ContactAddressType()::class);

实体是一个选择,我需要呈现自己的子表单类型,它拥有字段。