【发布时间】:2015-04-07 06:58:23
【问题描述】:
我有一个实体 PointOfSale,它与自己的标签和类别有多对多的关系,我正在寻找当我从数据库中加载 1k pointsOfSales 及其标签和类别时如何优化查询。
映射:
/**
* @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 序列化程序还是 fetch eager,还是使用函数从实体获取内容,但学说仍然会使用自己的查询为每个 pointOfSale 获取类别和标签。
有没有办法优化它以在单个查询中使用映射? (分页不是解决方案)
//编辑:另一个选择可能看起来像这样,全部被选中并映射了学说实体
$POSqb = $this->createQueryBuilder('pos')
->select('pos','c','t')
->leftJoin('pos.categories','c')
->leftJoin('pos.tags','t')
【问题讨论】:
标签: php symfony doctrine-orm