Symfony Form将one-to-many作为一对一处理

时间:2016-02-07 15:14:53

标签: php symfony symfony-forms

在数据库中,contact和contactAddress之间的关系是一对多的。

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

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

出现以下错误:

  

属性" contactAddresses"也不是其中一种方法   " addContactAddress()" /" removeContactAddress()&#34 ;,   " setContactAddresses()"," contactAddresses()"," __ set()"或" __ call()"   在课堂上存在并具有公共访问权限   "我\捆绑\ ContactBundle \实体\联系"

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

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

    return $this;
}

3 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:0)

使用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);

答案 2 :(得分:0)

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

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