【问题标题】:In doctrine 2.1, how do I get all entities using many to many associations - all articles in several categories?在学说 2.1 中,如何使用多对多关联获取所有实体 - 多个类别的所有文章?
【发布时间】:2011-12-26 15:39:29
【问题描述】:

我有一个 zend 框架 1.11.11 应用程序,使用教义 2.1(通过 bisna)。
我有一个文章和类别实体。每篇文章可以关联多个分类,每个分类可以容纳多篇文章。

我在其中的每一个中都创建了以下关联:
文章:

/**
 * @ManyToMany(targetEntity="Category", inversedBy="categoryArticles")
 * @JoinTable
 * (
 *      name="categories_articles",
 *      joinColumns={@JoinColumn(name="article_id", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="category_id", referencedColumnName="id")}
 * )
 * @var \Doctrine\Common\Collections\ArrayCollection
 */
protected $categories;

类别:

/**
 * @ManyToMany(targetEntity="Article", mappedBy="categories", cascade={"persist"})
 * @var ArrayCollection
 */
private $categoryArticles;

如何获取属于给定类别数组的所有文章?
例如,我想获取与类别 id 1、5 和 20 关联的所有文章。

标准存储库方式 ($this->findBy(array('categories' => array(1, 5, 20)))) 不起作用,dql 方式不起作用(根据我所做的尝试) 而且我似乎想不出其他方法。

我们将不胜感激。

【问题讨论】:

    标签: many-to-many associations doctrine-orm


    【解决方案1】:

    一种方法是加入/加入:

    <?php
    $category_ids = array(1,2,5);
    $qb = $em->createQueryBuilder();
    $qb->select('a')
        ->from('Article','a')
        ->join('a.categories','c')
        ->where($qb->expr()->in('c.id',$category_ids));
    $articles = $qb->getQuery()->execute();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 2019-08-02
      • 2018-10-04
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      相关资源
      最近更新 更多