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

Laravel调用OrderPlaced构造函数传入null参数报错如何解决

报错解决方法

问题1:查询订单返回空

你调用App\Order::find(1)时,如果数据库orders表中不存在id为1的记录,find方法会直接返回null,将null传入要求Order实例的构造方法就会触发类型错误。
解决修改web.php代码,使用findOrFail替代find,不存在对应订单时会直接抛出404错误,方便排查:

Route::get('/mailable', function(){
    $order = App\Order::findOrFail(1);
    return new App\Mail\OrderPlaced($order);
});

问题2:Order模型命名空间导入错误

从报错提示must be an instance of App\Mail\ App\Order可以看出,OrderPlaced类处于App\Mail命名空间下,你没有在文件顶部引入App\Order模型,PHP默认会在当前命名空间下查找Order类,导致类型匹配失败。
解决:打开OrderPlaced.php,在顶部命名空间声明后加入引入代码:

use App\Order;

也可以直接修改构造方法参数为完整命名空间路径:

public function __construct(\App\Order $order)

以上两处修改完成后,即可正常将订单实例传入邮件类,placed.blade.php模板不需要额外调整,就能正常渲染订单信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:02