gpt4 book ai didi

php - Symfony2/Doctrine 循环查询

转载 作者:行者123 更新时间:2023-11-29 12:17:24 24 4
gpt4 key购买 nike

我正在清理其他人编写的一些旧代码,因为我们遇到超时问题,特别是对于那些突破我们系统限制的客户。

我知道这是一种反模式,并且代码充满了这种变化:

$userIDs = [100,101,107,208, ...]; // tons of users, but not all users in a company.
$companyID = 4356;

foreach ($userIDs as $id) {
$user = $em->getRepository('AdminBundle:Users')
->getUser($id, $companyId);
$user->removeGroup($group);
$em->persist($user);
$em->flush();
}

它只会导致对每个用户进行查询,从而导致服务器超时(分析器显示数百个查询)。增加超时确实有效,但该解决方案无法很好地扩展......并且导致我喝咖啡的时间比健康的要多。

将其重写为单个更新查询的正确、高效、symfony-ey 方法是什么?

最佳答案

两种可能性:

  1. 使用带有 whereIn 语句的查询生成器,绑定(bind)到用户 ID 数组和带有公司 ID 的 andWhere

  2. 如果目标是执行删除操作,并且此后您不再使用该实体,则可以使用精心设计的 DQL 请求。

如果需要,我可以编辑并添加更多助手。

关于php - Symfony2/Doctrine 循环查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com