更新doctrine的arrayResult

问题描述 投票:0回答:1

我这个查询我得到了具有一定条件的所有手机,之后我想要的一件事就是将此查询中的所有手机的isFirstInstalled设置为1我也想要这个查询的数据用于api结果什么是最优化的方式最简单的方法是在foreach中使用查询结果并逐个设置为1?我想在更新之前查询我的结果

$isFirstNotInstalledCases = $em->getRepository(User::class)
        ->createQueryBuilder('u')
        ->select("u.phone as phone")
        ->addSelect("u.isFirstInstalled as isFirstInstalled")
        ->where("u.phone IN (:phone)")
        ->andWhere("u.isFirstInstalled = :isFirstInstalled")
        ->setParameters(['isFirstInstalled'=>0,'phone'=>$phones])
        ->getQuery()
        ->getArrayResult();
symfony doctrine
1个回答
0
投票

如果你不做逻辑,尽量避免使用foreach,更好地使用update。像这样的东西:

    $qb = $this->_em->createQueryBuilder();
    $q = $qb->update('App\User', 'u')
        ->set('u.isFirstInstalled', 1))
        ->where("u.phone IN (:phone)")
        ->andWhere("u.isFirstInstalled = :isFirstInstalled")
        ->setParameters(['isFirstInstalled'=>0,'phone'=>$phones])
        ->getQuery();
    $p = $q->execute();
© www.soinside.com 2019 - 2024. All rights reserved.