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.