0

我有一个基于 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)

谢谢你的帮助!

问候,马克

4

1 回答 1

0

您正在执行 SQL。教义不同。您不直接与多对多表交互。教义处理这个问题。我认为您想要的查询是:

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

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

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

于 2013-04-28T19:53:52.800 回答