使用symfony中的条令将所有级联删除查询合并为单个查询

使用symfony中的条令将所有级联删除查询合并为单个查询,symfony,doctrine-orm,Symfony,Doctrine Orm,1Country可以有0个或多个League,因此这是一个1-N关系,我们都知道这是一个1-N关系。我还设置了级联删除。我的问题是:这听起来可能有点含糊不清,但当我删除一个国家/地区时,有没有一种方法可以将所有删除查询(删除League表中相关记录的查询)合并为一个查询 我之所以这么问,是因为如果排行榜上有100条记录,那就意味着有100条删除查询。请看下面的图片,这是从Symfony档案 谢谢 课程 class Country { /** * @ORM\OneToMany(

1
Country
可以有0个或多个
League
,因此这是一个1-N关系,我们都知道这是一个1-N关系。我还设置了级联删除。我的问题是:这听起来可能有点含糊不清,但当我删除一个国家/地区时,有没有一种方法可以将所有删除查询(删除
League
表中相关记录的查询)合并为一个查询

我之所以这么问,是因为如果排行榜上有100条记录,那就意味着有100条删除查询。请看下面的图片,这是从Symfony档案

谢谢

课程

class Country
{
    /**
     * @ORM\OneToMany(
     *  targetEntity="League",
     *  mappedBy="country",
     *  cascade={"persist", "remove"},
     *  orphanRemoval=true
     * )
     */
    protected $league;
}

class League
{
    /**
     * @ORM\ManyToOne(
     *  targetEntity="Country",
     *  inversedBy="league"
     * )
     * @ORM\JoinColumn(
     *  name="country_id",
     *  referencedColumnName="id",
     *  onDelete="CASCADE",
     *  nullable=false
     * )
     */
    protected $country;
}
存储库

我正在阻止惰性负载对
League
运行单独的查询,否则您将在上图中看到另一个查询

public function findOneById($id)
{
    return
        $this->createQueryBuilder('c')
        ->select('c, l')
        ->leftJoin('c.league', 'l')
        ->where('c.id = :id')
        ->setParameter('id', $id)
        ->getQuery()
        ->getSingleResult();
}
控制器

我通常不会在控制器中保留整个逻辑,但这只是为了演示

public function deleteAction($id)
{
    $em = $this->getDoctrine()->getEntityManager();
    $repo = $em->getRepository('FootballFrontendBundle:Country');

    $country = $repo->findOneById($id);
    if ($country instanceof Country) {
        $em->remove($country);
        $em->flush();
    }
}

在这种情况下,您可能希望在存储库中有一个自定义查询来为您删除联赛