1
不知道這裏的標題是否有點模棱兩可,但基本上我試圖做的是從數據庫中獲取數據,但我需要引用連接表沒有自己的實體,因爲它只在另一個實體中被引用。如何在沒有實體的原則查詢中加入連接表
這是我的設置。我有一個Symfony2項目,我有一個數據庫中的階段列表,每個階段可以在一個或多個類別。我需要抓住特定類別的所有階段,並按相關排序順序排列。如果我在MySQL直接這樣做,我會寫:
SELECT s.stage FROM stage s LEFT JOIN stage_category sc ON sc.stage_id = s.id WHERE sc.category_id = 1 ORDER BY s.sort_order
但問題是,「stage_category」連接表有沒有實體,所以如果我在我的學說查詢引用它,它告訴我它不存在。我寫它:
$qb = $this->createQueryBuilder('s')
->select('s')
->join('stage_category','sc')
->where('sc.category_id = :cat')
->setParameter('cat', $cat);
雖然不能完全肯定,如果這是正確的 - 這是在我的倉庫類名爲findStagesInCategory()方法。
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Category", inversedBy="stage", cascade={"remove", "persist"})
* @ORM\JoinTable(name="stage_category")
* @ORM\JoinColumn(onDelete="SET NULL")
*/
private $category;
而且在反方:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Stage", mappedBy="category", cascade={"remove", "persist"})
*/
private $stage;
有中能夠得到我所需要的數據的任何可行辦法?