Symfony2-学说DQL-许多查询



我有实体 OfferArea,在这里,一个 Offer可以具有许多 Areas,一个 Area属于许多 Offers

Offer实体:

/**
 * @ORMManyToMany(targetEntity="Area")
 * @ORMJoinTable(name="relationship_offer_areas",
 *      joinColumns={@ORMJoinColumn(name="offer_id", referencedColumnName="id", onDelete="CASCADE")},
 *      inverseJoinColumns={@ORMJoinColumn(name="area_id", referencedColumnName="id")}
 *      )
 */
private $areas;

现在,我正在尝试使用DQL通过Area获得Offers(不是查询构建器!):

$query = 'SELECT o FROM IndexBundle:Offer o '.
    'LEFT JOIN IndexBundle:Area a '.
    'WHERE a = :area '.
    'ORDER BY o.startDate ASC';

这里:areaArea实体对象。不幸的是,它无法正常工作。我得到所有领域的报价行。

有什么想法我想念什么?用查询语言与实体合作确实扭曲了我的思想。谢谢!

$query = 'SELECT o FROM IndexBundle:Offer o '.
'LEFT JOIN o.areas a '.
'WHERE a.id = :areaId '.
'ORDER BY o.startDate ASC';

它不知道如何即时使用JOIN。使用实体的属性加入。就像您在需要其他数据的列时,就像您在SQL中执行LEFT JOIN一样。如您在JOIN的ON中所指定的。

使用dql左加入 - 请参阅文档:学说DQL-选择示例

$query = $em->createQuery('SELECT u.id, a.id as article_id FROM CmsUser u LEFT JOIN u.articles a');
$results = $query->getResult(); // array of user ids and every article_id for each user

相关内容

  • 没有找到相关文章

最新更新