2012-03-14 150 views
1

我有两个表格,一个包含城市,一个包含国家。每个城市都通过ManyToOne关系(通过country country_id)链接到一个国家。Symfony2:按国家/地区列出城市

我现在需要做的是,将所有城市链接到该数据库的每个国家/地区的列表中。

无法弄清楚,如何使用doctrine构建这个查询。

回答

2

到国家加入一对多关系,城市与乡村之间,则:

$country->getCity(); //return all linked cities from city table 
+0

各国与城市无关,反之亦然。 Thaty我的问题。意思是$ city-> getCountry()的作品; $ country-> getCity()没有属性。 – madc 2012-03-14 12:09:21

+0

你为什么不把国家连接到城市?更新我的回答 – seferov 2012-03-14 12:13:00

+0

确实,你是对的。谢谢。 – madc 2012-03-14 12:25:04

3

看一看的一对多双向设置

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/association-mapping.html#one-to-many-bidirectional

下面是使用上的注释的例子:

/** 
* @Entity 
* @Table(name="country") 
*/ 

class Country 
{ 
    /** 
    * @Id 
    * @Column(type="integer") 
    * @GeneratedValue 
    */ 
    public $id; 

    /** 
    * @Column(type="string", length=30, name="name", nullable=false) 
    */ 
    public $name; 

    /** 
    * @OneToMany(targetEntity="City", mappedBy="Country") 
    */ 
    private $cities; 
} 


/** 
* @Entity 
* @Table(name="city") 
*/ 
class City 
{ 
    /** 
    * @Id 
    * @Column(type="integer") 
    * @GeneratedValue 
    */ 
    public $id; 

    /** 
    * @ManyToOne(targetEntity="Country") 
    * @JoinColumn(name="country", referencedColumnName="id") 
    */ 
    public $country; 

    /** 
    * @Column( type="string", length=30, name="name", nullable=false) 
    */ 
    public $name; 
} 

你需要设置这个u p以允许$country->getCities()方法起作用

+0

感谢您的回答。你发布了它,而我正在修补和解决seferovs提示你的建议。这就是为什么他得到了“答案 - 对号”。 – madc 2012-03-14 12:27:17

+0

@madc没有问题 - 我添加了示例,因为文档中没有注释示例 – ManseUK 2012-03-14 12:27:57