2012-04-24 55 views
1

我卡在得到這個與Symfony2中和學說,這種情況的工作: 着一雙銳利的信息(基本信息和看管信息)的頁面。Symfony的2取從許多數據一對多的關係教義

的護理服用可以有多個穿孔其所適用和穿刺可以有多種保健徵收

數據庫佈局:

Piercings: 
    id 
    name 
    ... 

Caretaking: 
    id 
    title 
    description 

piercing_to_caretaking 
    id 
    piercing_id 
    caretaking_id 

現在,我將如何創建實體和相應的查詢/ Dql?

回答

3

如果您正在使用YML定義你的實體:

在Piercing.orm.yml補充:

manyToMany: 
    caretakings: 
     targetEntity: Caretaking 
     inversedBy: piercings 
     joinTable: 
      name: piercing_caretaking 
      joinColumns: 
       caretaking: 
        referencedColumnName: id 
      inverseJoinColumns: 
       piercing: 
        referencedColumnName: id 

在Caretaking.orm.yml補充:

manyToMany: 
    piercings: 
     targetEntity: Piercing 
     mappedBy: caretakings 

生成/更新通常方式的實體,即:

app/console doctrine:schema:update --dump-sql (to check results) 
app/console doctrine:schema:update --force (to apply changes) 

然後,當你有一個穿孔或看管實體可以訪問相關的實體是這樣的:

$piercing->addCaretaking($caretaking); 
$caretakings = $piercing->getCaretakings(); 
... 
$piercings = $caretaking->getPiercings(); 

欲瞭解更多信息,包括如何做到這一點使用說明,請參見小節5.1.4多對多, Doctrine文檔的Section 5 Association Mapping雙向。

+0

感謝您的回答,它只是清除了我遇到的致命異常和不存在的功能問題。儘管我使用註釋而不是YAML,但很容易調整您的解決方案。 – nealio82 2012-06-19 19:51:16