Php 条令ManyToMany优化了许多查询

Php 条令ManyToMany优化了许多查询,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有实体PointOfSale,它和自己的标记和类别有多对多的关系,当我从数据库中加载1k pointsOfSales的标记和类别时,我正在研究如何优化查询 映射: /** * @ORM\ManyToMany(targetEntity="Tag", inversedBy="pointsOfSales", fetch="EAGER") * @Serializer\Groups({"detail","list"}) * @Serializer\MaxDepth(3) * @ORM\J

我有实体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,或者我是使用函数从实体中获取内容,doctrine都将使用自己的查询获取每个销售点的类别和标记

有没有办法在单个查询中使用映射来优化它?(分页不是解决方案)

//编辑:另一个选择可能看起来像这样,全部被选择,条令实体被映射

$POSqb = $this->createQueryBuilder('pos')
    ->select('pos','c','t')
    ->leftJoin('pos.categories','c')
    ->leftJoin('pos.tags','t')

您可以这样修改查询

return $this->getEntityManager()->createQuery("SELECT pos, c, t FROM YourBundle:ClassName pos LEFT JOIN pos.categories c LEFT JOIN pos.tags t ")->getResult();

编辑版本。将包名称和类名从中输入。如果不在存储库中执行此操作,请不要忘记添加使用语句

这不起作用,因为语句中缺少查询,但当我从销售点pos添加
时,我得到
错误:未定义类“销售点”。
这很奇怪。但我不确定“尝试”强制从联接中全选是否会强制映射实体类。类名必须类似于“FROM AmoMainBundle:Company c”