You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何从数据库获取纯邮箱值数组用于邮件群发

解决Laravel查询邮箱数组无法直接用于Mail::to()的问题

嘿,我完全懂你的困扰——用get()或者toArray()拿到的结果总是带键名,没法直接传给邮件发送的to()方法对吧?别担心,Laravel其实提供了非常简洁的方法来搞定这个问题。

最直接的解决方案:使用pluck()方法

pluck()就是专门用来提取数据库表中某一列所有值的工具,刚好能生成你需要的纯值数组。修改你的查询语句如下:

$owners = DB::table('users')
    ->where('active', 1)
    ->where('userType', 1)
    ->pluck('email')
    ->toArray();

这样$owners就会变成你想要的格式:

['myoneemail@esomething.com', 'myother@esomething.com','myother2@esomething.com']

更简洁的用法:直接传递Collection

其实Laravel的Mail::to()方法本身就支持接收Collection对象,所以你甚至可以省略toArray()这一步,直接把pluck()的结果传进去:

$owners = DB::table('users')
    ->where('active', 1)
    ->where('userType', 1)
    ->pluck('email');

Mail::send('email-view', $data, function($message) use ($owners) {
    $message->to($owners)->subject('你的邮件主题');
    // 其他邮件配置...
});

为什么之前的方法不行?

  • get()返回的是包含stdClass对象(或Eloquent模型)的Collection,每个对象里包含email属性;
  • toArray()只是把这些对象转成关联数组,每个元素还是带'email'键的数组,自然没法直接给to()用。

而pluck('email')会直接把所有email字段的值提取出来,生成一个只包含邮箱字符串的Collection,转成数组就是纯值数组啦。

内容的提问来源于stack exchange,提问作者user3242861

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:20:14