create必须为数组类型laravel中的邮件陷阱错误

问题描述

我正在构建投诉管理系统,并且在laravel中配置了邮件陷阱来发送邮件。我想要的是,当用户添加新投诉时,系统会自动向管理员发送“新投诉”电子邮件。我在控制器的添加新投诉功能中编写了一个简单的代码,但是当我运行该应用程序时,出现了一个我不理解的错误。

TypeError 传递给Illuminate \ Database \ Eloquent \ Builder :: create()的参数1必须为数组类型,给定对象,在C:\ xampp \ htdocs \ Complain-Management-System \ vendor \ laravel \ framework \ src \ Illuminate中调用第23行的\ Support \ Traits \ ForwardsCalls.php

这是我的创建函数:

public function create(Request $data)
{
    //  dd($data['user_id']);

    $data->validate([
        'type'          =>  'required','station'       =>  'required','description'   =>  'required|min:20|max:1000',]);
    
    Complaint::create([
        'type'          => $data['type'],'station'       => $data['station'],'description'   => $data['description'],'comment'       => $data['comment'],'status'        => $data['status'],'user_id'       => $data['user_id']
    ]);

    $complaint = Complaint::create($data);
    Mail::send('emails.test',$complaint->toArray(),function($message) {
        $message->to('tm.talhamaqsood18@gmail.com','Test Mail')
        ->subject('Complaint Created');
    });
    
    return redirect()->route('all-complaints');
}

这是路线:

Route::post('complaints',[App\Http\Controllers\ComplaintController::class,'create'])->name('new-complaint')->middleware('loggedIn');

解决方法

如果Complaint是一个雄辩的模型,则需要将一个数组传递给create而不是Request对象,$data是一个Request。不确定为什么要尝试创建2个投诉(我认为是基于相同的数据)。

如果需要新创建的Complaint模型,只需在使用数组创建模型后将其分配给$complaint

$complaint = Complaint::create([
    'type'          => $data['type'],'station'       => $data['station'],'description'   => $data['description'],'comment'       => $data['comment'],'status'        => $data['status'],'user_id'       => $data['user_id']
]);

您无需再打Complaint::create

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...