query foreign entitymanagerinterface symfony doctrine2

foreign - relation symfony



Entidad de actualizaciĆ³n de Doctrine en ciclo, persistir o nivelar? (1)

Tengo varios bucles como:

$bets = $this->em->getRepository(''AppBundle:Bet'')->getBetsForMatch($match_id); foreach ($bets as $key => $bet) { $devices = $this->em->getRepository(''AppBundle:Device'')->findBy(array(''user'' => $bets->getUser())); foreach ($devices as $key => $device) { //HERE I SEND A PUSH NOTIFICATION if($this->rms_push->send($message)){ $device->getUser()->setBadge($device->getUser()->getBadge() + 1); $this->em->flush(); } } }

Entonces, obtengo todas las apuestas para un partido, para cada apuesta obtengo todos los dispositivos guardados para el usuario, y después de eso necesito actualizar mi usuario con: $device->getUser()->setBadge($device->getUser()->getBadge() + 1);

Por ahora, me sonrojo cada vez pero creo que hay una mejor manera, ¿ideas?


Solo necesitas un color, fuera de tu circuito:

foreach ($bets as $key => $bet) { $devices = $this->em->getRepository(''AppBundle:Device'')->findBy(array(''user'' => $bets->getUser())); foreach ($devices as $key => $device) { //HERE I SEND A PUSH NOTIFICATION if($this->rms_push->send($message)){ $device->getUser()->setBadge($device->getUser()->getBadge() + 1); } } } $this->em->flush();

Llamar $this->_em->persist($obj) implica crear una nueva entrada.

Si necesita crear o actualizar dependiendo de si la entrada existe o no, consulte EntityManager::merge .

Para conservar el uso de memoria para un gran número de entradas, observe el procesamiento por lotes .

Nota La información de SensioLabs (análisis de calidad del código fuente de PHP) genera una advertencia si su código llama a EntityManager::flush dentro de un ciclo.