微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Symfony 5 - Twig - 访问 entity.entityB.entityC.property 花费很多请求

如何解决Symfony 5 - Twig - 访问 entity.entityB.entityC.property 花费很多请求

在我的一个页面上,我显示一个客户列表,其中包含他们的国家或公司名称等信息。

于是我进行了如下操作:

存储库:

    public function findAllAvailableCustomers()
    {
        return $this->createqueryBuilder('s')
            ->join('s.user','u')
            ->join('u.entreprise','e')
            ->leftJoin('s.subscription','ss')
            ->leftJoin('ss.plan','sp')
            ->addSelect('ss')
            ->where('e.willbedeleted = false')
            ->orderBy('s.createdAt','DESC')
            ->getQuery()
            ->getResult();
    }

树枝:

//...

<td>{{ customer.user.email }}</td>
<td>{{ customer.denomination }}</td>
<td>{{ customer.user.entreprise.nom }}</td> // generates 11 requests

//...

我不明白如何减少因显示客户的公司名称而导致的查询数量

我尝试在 fetch="EXTRA_LAZY"StripeCustomer.user 实体属性添加 User.entreprise,但没有。

我也尝试在请求中添加内容

->addSelect('u,e,ss') 但它会产生 600 多个请求

所以我不知道... :/

解决方法

您还应该在第一个查询中选择企业实体:

public function findAllAvailableCustomers()
{
    return $this->createQueryBuilder('s')
        ->join('s.user','u')
        ->join('u.entreprise','e')
        ->leftJoin('s.subscription','ss')
        ->leftJoin('ss.plan','sp')
        ->addSelect('e') // <--- HERE
        ->addSelect('ss')
        ->where('e.willBeDeleted = false')
        ->orderBy('s.createdAt','DESC')
        ->getQuery()
        ->getResult();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。