обновить массивРезультат учения - PullRequest
0 голосов
/ 20 февраля 2019

В этом запросе я получаю все телефоны с определенным условием, и одна вещь, которую я хочу после этого - установить 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();

1 Ответ

0 голосов
/ 20 февраля 2019

Старайтесь избегать 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();
...