I'm currently coding a newsletter system. In order to send the mail, I need to get all e-mail addresses from my database (of course).
So I created a custom repository method, as follows :
public function getEmailAddresses()
{
$query = $this->getEntityManager()->createQueryBuilder()
->select('u.email')
->from('AppBundle:User', 'u')
->where('u.isNewsletterSubscriber = true')
;
$results = $query->getQuery()->getResult();
$addresses = [];
foreach($results as $line) {
$addresses[] = $line['email'];
}
return $addresses;
}
I am wondering if there is a better way to do so than treating the result to get a "plain" array containing only e-mail addresses. In effect, after $query->getQuery()->getResult()
, I get something like this :
'results' =>
[0] => array('email' => 'first@email.com')
[1] => array('email' => 'second@email.com')
And as I said, I want something like this :
array('first@email.com', 'second@email.com')
Does a cleaner way to do that exist using Doctrine2 built-in methods ? I've tried with different hydratation modes but nothing worked.
Thanks in advance :)