我这个查询我得到了具有一定条件的所有手机,之后我想要的一件事就是将此查询中的所有手机的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();
如果你不做逻辑,尽量避免使用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();