2
我有實體PointOfSale,它與自己的標籤和類別有許多關係,我正在尋找如何優化查詢,當我從它的標籤和類別加載1k pointsOfSales數據庫時。Doctrine ManyToMany優化了很多查詢
映射:
/**
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="pointsOfSales", fetch="EAGER")
* @Serializer\Groups({"detail","list"})
* @Serializer\MaxDepth(3)
* @ORM\JoinTable(name="pointOfSales_tags")
**/
private $tags;
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="pointsOfSales", fetch="EAGER")
* @Serializer\Groups({"detail","list"})
* @Serializer\MaxDepth(3)
* @ORM\JoinTable(name="pointOfSale_categories")
**/
private $categories;
事情是,當我想用類別和標籤返回JSON,總有像2K的查詢,而不是一個,我所需要的。
我使用這個查詢:
$POSqb = $this->createQueryBuilder('pos');
->leftJoin('pos.categories','c');
->leftJoin('pos.tags','t');
$query = $POSqb->getQuery();
return $query->execute();
這並不重要,如果我使用JMS串行或取渴望或我使用函數來獲取從實體內容,仍然學說將獲取類別並用它自己的查詢標記每個pointOfSale。
有沒有辦法優化這個在單個查詢中使用映射? (分頁並不溶液)
//編輯:另一種選擇可能是這樣的,所有的選擇和學說實體映射
$POSqb = $this->createQueryBuilder('pos')
->select('pos','c','t')
->leftJoin('pos.categories','c')
->leftJoin('pos.tags','t')
這是不工作,因爲查詢缺少FROM語句,但是當我添加'''從PointOfSale pos'''我得到'''錯誤:類'PointOfSale'沒有定義.'''這是奇怪的。但我不確定是否試圖強制從連接中選擇全部將強制映射實體類。 – zajca
哦,真的。類名必須看起來像「FROM AmoMainBundle:公司c」 – maches