在symfony4中,我使用的是doctrine documentation
中所述的迭代解决方案问题是我需要在foreach循环内执行查询,如果执行了,则迭代结束。
//...
$repo = this->_em->getRepository('App\Entity\EmailAddressStatus');
// Gets 15k results
$q = $this->_em->createQuery('select u from App\Entity\User 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]);
}
答案 0 :(得分:0)
您应该尝试选择JOIN到EmailAddressStatus的用户,这样您就只能获得这样的有效用户:
$this->_em->createQuery('select u From App\Entity\User u JOIN App\Entity\EmailAddressStatus s WITH s.email = u.email AND s.status <> ?1')
->setParameter(1, 'not-allowed-status');