2012-04-24 75 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