我遇到错误Undefined property: stdClass::$email
我的控制器操作中的代码:
...
use App\Mail\WelcomeMail;
use Illuminate\Support\Facades\Mail;
public function approve($id){
$mail = DB::select('select pic_email from vendors where id = :id', ['id' => $id]);
$user = DB::select('select roc_no from vendors where id = :id', ['id' => $id]);
Mail::to($mail)->send(new WelcomeMail($user));
return redirect('/account/pending')->with('success', 'Account approved!');
}
在app \ Mail \ WelcomeMail.php中:
class WelcomeMail extends Mailable
{
use Queueable, SerializesModels;
public $user;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($user)
{
$this->user = $user;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.welcome');
}
}
我根据https://www.5balloons.info/send-email-registration-laravel-authentication/
的教程编写了代码我使用Mailtrap。 Laravel内置密码重置功能正在运行时,.env中的所有凭据/配置均正确。那我的代码怎么了?
更新:我将跟踪错误,可能是由于控制器操作$mail = DB::select('select pic_email from vendors where id = :id', ['id' => $id]);
我正在使用SQL返回值。然后,我尝试使用修补程序,将值$mail
作为数组返回。我认为是导致无法获得$mail
的问题。
如何纠正?使用extract()
也无济于事。
答案 0 :(得分:1)
DB::select
函数返回一个对象数组。 DB::selectOne
将返回一个按列名索引的单个对象。
您还可以将两个查询合并为一个查询,然后按以下方式访问列名:
public function approve($id)
{
$vendor = DB::selectOne('select pic_email, roc_no from vendors where id = :id', compact('id'));
Mail::to($vendor->pic_email)->send(new WelcomeMail($vendor->roc_no));
return redirect('/account/pending')->with('success', 'Account approved!');
}
答案 1 :(得分:0)
不需要两个不同的查询,您可以在一个查询中完成
controllers.Default.redirect(to = "http://www.google.com")
答案 2 :(得分:0)
如果需要,您可以进行测试!通过tinker如下代码。
做测试,如果有错误,它会给你。
# SSH into droplet
# go to project
$ php artisan tinker
$ Mail::send('errors.401', [], function ($message) { $message->to('emmanuelbarturen@gmail.com')->subject('this works!'); });
# check your mailbox