我有一个表单,用于填充Symfony2中的Project
Doctrine实体。
我们说这些字段是:
Name: ______________
Customer: ____________
Customer
是另一个Doctrine实体。
我的问题是,我无法设法检索客户实体。我试图根据ID(例如,该字段成为客户ID)检索它,然后在prePersist事件监听器中使用检索到的实体设置$project->customer
,但这对我来说似乎有点过分了。
我想做的就是以下几点:
Customer
实体的列表框作为客户字段(Project
表格)我知道它必须非常简单,我需要3分钟才能使用PHP / MySQL和一些外键设置它,但我只是不知道使用Symfony2 /做到这一点的最佳方法学说(意思是尊重标准,不看意大利面)。
所以,我的问题:
MyBundle\Form\ProjectType->buildForm()
函数中声明什么?感谢。
答案 0 :(得分:0)
刚刚找到答案。这很简单:)
在MyBundle / Form / ProjectType.php中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('customer', 'entity', array(
'class' => 'Me\Bundle\MyBundle\Entity\Customer',
'property' => 'name'));
}
然后在Project.orm.yml(是的,我喜欢Yaml):
manyToOne:
customer:
targetEntity: Customer
joinColumn:
name: customerId
referencedColumnName: id
nullable: false
最后,在Customer.orm.yml:
oneToMany:
projects:
targetEntity: Project
mappedBy: customer
就是这样! Symfony2负责这一切。简单明了。