迭代时的学说批处理查询



在symfony4中,我正在使用教义文档中解释的迭代解决方案

问题是我需要在 foreach cicle 中执行查询,如果我这样做,迭代结束。

//...
$repo = this->_em->getRepository('AppEntityEmailAddressStatus');
// Gets 15k results
$q = $this->_em->createQuery('select u from AppEntityUser u');
$iterableResult = $q->iterate();
foreach ($iterableResult as $row) {
$emails = $row[0]->getEmails();
foreach($emails as $email){
// If i do this the iteration ends after first result
$check = $repo->isEmailBlackListed($email);
// Do something with $check and $email...
}
// detach from Doctrine, so that it can be Garbage-Collected immediately
$this->_em->detach($row[0]);
}

您应该尝试选择具有 JOIN to EmailAddressStatus 的用户,以便您只获得像这样的有效用户:

$this->_em->createQuery('select u From AppEntityUser u JOIN AppEntityEmailAddressStatus s WITH s.email = u.email AND s.status <> ?1')
->setParameter(1, 'not-allowed-status');

最新更新