问题描述
我正在构建投诉管理系统,并且在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
。