gpt4 book ai didi

php - 从 Doctrine2 获取值数组的正确方法

转载 作者:行者123 更新时间:2023-12-03 19:16:00 24 4
gpt4 key购买 nike

我目前正在编写一个时事通讯系统。为了发送邮件,我需要从我的数据库中获取所有电子邮件地址(当然)。

所以我创建了一个自定义存储库方法,如下所示:

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;
}

我想知道是否有比处理结果以获得仅包含电子邮件地址的“普通”数组更好的方法。实际上,在 $query->getQuery()->getResult() 之后,我得到了这样的结果:

'results' =>
[0] => array('email' => 'first@email.com')
[1] => array('email' => 'second@email.com')

正如我所说,我想要这样的东西:

array('first@email.com', 'second@email.com')

使用 Doctrine2 内置方法是否存在更简洁的方法?我尝试过不同的补水模式,但没有任何效果。

提前致谢:)

最佳答案

你可能会 create a custom hydrator , 但按照你现在的方式去做真的没有问题。您也可以通过以下方式进行:

PHP <= 5.4

return array_map('current', $addresses);

PHP >= 5.5

return array_column($addresses, 'email');

array_column 函数是在 PHP 5.5.0 中引入的,它可以满足您的需求。 array_map 函数将以其他方式工作,调用 PHP 的内部 current 函数,它只返回当前元素的值(它总是被初始化为该数组的第一个元素)。

如果返回大量行,请谨慎使用 array_map,因为它可能会变慢,而且肯定会占用更多内存,因为它必须复制数组。

关于php - 从 Doctrine2 获取值数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27769443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com