我正在构建一个投诉管理系统,并在laravel中配置mailtrap来发送邮件。我想要的是,当用户添加新投诉时,会自动向管理员发送一封"新投诉"电子邮件。我在控制器的添加新投诉功能中写了一个简单的代码,但当我运行应用程序时,出现了一个我不理解的错误。
TypeError传递给Illuminate\Database\Eloquent\Builder::create((的参数1必须是给定对象的数组类型,在第23行的C:\examplep\htdocs\Complain Management System\vendor\laravel\framework\src\Illuminate\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', [AppHttpControllersComplaintController::class, 'create'])->name('new-complaint')->middleware('loggedIn');
如果Complaint
是Eloquent Model,则需要将数组传递给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
电话。