2016-07-05 54 views
-1
$email_ids= DB::table('users')->pluck('email_id'); 
$name = DB::table('users')-> pluck('name'); 

foreach ($email_ids as $email_id) {     
    Mail::send('mail', ['user' => $name ] , function ($message) use ($email_id) { 
     $message->from('[email protected]', 'ABC'); 
     $message->to($email_id)->subject("Welcome"); 
    });  
} 

我想发送邮件给各自的用户,并在电子邮件中使用他们的名字。我得到了$email_ids$name。但是,当运行此代码时,收到错误作为获取错误由于htmlentities()期望参数1是字符串,数组给定

ヶ辆()预计参数1是字符串,数组给定

当我与'user' => $email_id替换'user' => $name。我成功运行。

在发送邮件时应该像

Hello , $name(name of user) 

谢谢

+0

什么是'$ name'价值你的代码是什么,你可以做'的print_r($名)'或'的var_dump($名)'。你会看到它不是根据错误信息的字符串。 – ymas

+0

$ name是一个数组。你不能传递一个数组。 –

+0

ymas ... [“ABC”,“XYZ”,“PQR”]。我得到了这些价值...... Ravi Hirani ......那么我能做的另一种方式是什么? –

回答

2

你的代码应该是: -

$users = DB::table('users')->get(); // get all users 
foreach ($users as $user) { 
    $name = $user->name; // get user's name 
    $email_id = $user->email_id; // get user's email 
    Mail::send('mail', ['user' => $name ] , function ($message) use ($email_id) { 
     $message->from('[email protected]', 'ABC'); 
     $message->to($email_id)->subject("Welcome"); 
    });  
} 

注意: - 您可以从数据库获取特定的列通过以下查询表,

$users = DB::table('users')->select('name', 'email_id')->get(); 
+0

它提供了一个错误,因为'不能使用类型为stdClass的对象作为数组' –

+0

@BhavinShah:检查我更新的答案 –

+0

谢谢。有效。 :) –

0

Laravel在视图文件中存在错误时显示htmlentities()错误。

在你的情况,你在不同的,不同的阵列获取的姓名和电子邮件,但你只的foreach $email_ids$name在这一行

Mail::send('mail', ['user' => $name ] , function ($message) use ($email_id) { 
在这个 $name

是名称的数组由查询返回,并要打印它作为字符串,这就是为什么它给出了这个错误。

达到你想要改变这样的

$users = DB::table('users')->select('name')->addSelect('email_id')->get()->toArray(); 

foreach ($users _ids as $user) {     
    Mail::send('mail', ['user' => $user->name ] , function ($message) use ($user->email_id) { 
     $message->from('[email protected]', 'ABC'); 
     $message->to($user->email_id)->subject("Welcome"); 
    });  
} 
相关问题