ManyToMany关联查询

时间:2013-04-28 14:07:06

标签: php mysql symfony doctrine-orm

我有一个基于Doctrine 2.X ManyToMany协会的问题。我的数据结构:

news:
    id: INT

program_site:
    id: INT

news_program_site:
    newsId: INT
    programSiteId: INT

从我的News.php中提取:

/**
 * @ORM\ManyToMany(targetEntity="ProgramSite")
 * @ORM\JoinTable(name="news_program_site",
 *      joinColumns={@ORM\JoinColumn(name="newsId", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="programSiteId", referencedColumnName="id")}
 *  )
 */
private $programSites;

我的问题: 是否有可能获得在news_program_site中有标识符X实体的所有新闻。

示例:

SELECT * FROM news AS n INNER JOIN news_program_site AS s ON s.newsId = n.id WHERE s.programSiteId IN(2, 3)

感谢您的帮助!

电贺, 马克

1 个答案:

答案 0 :(得分:0)

你正在做SQL。学说不同。您不直接与多对多表交互。学说处理这个问题。我认为你想要的查询是:

$query = $em->createQuery("SELECT n FROM news n JOIN program_site ps");
$users = $query->getResult();

然后,您将新闻作为实体处理,并调用news.getProgramSite()以获取与新闻实体关联的ProgramSites列表。您可以在查询中添加where子句(例如,将新闻项目添加到特定的程序中),但根据您的描述,我认为您不需要它。

这是一个与SQL完全不同的范例,需要一些时间来习惯。

相关问题