簡體   English   中英

從Symfony2中的表單檢索另一個實體

[英]Retrieving another entity from a form in Symfony2

我有一個在Symfony2中填充Project學說實體的表格。

假設這些字段是:

Name: ______________
Customer: ____________

如果Customer是另一條學說實體。

我的問題是,我無法檢索客戶實體。 我嘗試根據實例ID檢索它(該字段變為Customer ID),然后在prePersist事件偵聽器中為所檢索的實體設置$project->customer project- $project->customer ,但對我來說似乎有些矯kill過正。

我要做的只是以下內容:

  1. 顯示帶有可用Customer實體作為客戶字段的列表框(在“ Project表單中)
  2. 在數據庫中,用所選客戶的ID填充customerId字段(在Project表中)

我知道它必須非常簡單,我只用3分鍾的時間就可以使用PHP / MySQL和一些外鍵進行設置,但是我根本不知道使用Symfony2 / Doctrine的最佳方法(這意味着在某種程度上尊重標准,而不是意大利面條)。

所以,我的問題是:

  1. 我應該在MyBundle\\Form\\ProjectType->buildForm()函數中聲明什么?
  2. 我應該如何檢索所選的Customer實體,以及在目錄結構中(控制器,實體,prePersist事件偵聽器...)在哪里進行檢索?

謝謝。

剛剛找到答案。 這真的很簡單:)

在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會處理所有這一切。 只是簡單的魔術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM