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

Laravel 9发送邮件时出现Undefined variable $order_id错误求助

问题排查与解决

可能的原因及修复步骤

1. 清除视图缓存

Laravel会缓存Blade模板,旧缓存可能导致变量未被识别,执行以下命令清理:

php artisan view:clear

2. 排查队列任务问题

由于你的邮件类实现了ShouldQueue,队列worker可能未加载最新代码,先重启队列:

php artisan queue:restart

也可以临时去掉implements ShouldQueue,改为同步发送邮件,验证是否是队列导致的问题。

3. 简化变量传递逻辑

你已经将$order_id定义为类的公共属性,Laravel会自动将公共属性注入视图,无需再用->with()重复传递。修改build方法:

public function build()
{
    return $this->view('mails.ordermail');
}

4. 验证模板路径与文件名

确认resources/views/mails/ordermail.blade.php文件存在,注意文件名和路径的大小写(Linux服务器区分大小写,Windows不区分)。

5. 确认变量传入是否正确

在邮件类构造函数中添加日志,验证$order_id是否被正确赋值:

public function __construct($order_id)
{
    $this->order_id = $order_id;
    \Log::info('邮件接收的订单ID:' . $order_id);
}

查看storage/logs/laravel.log文件,确认值是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:15:52