create()必须是数组类型(laravel中的mailtrap错误)



我正在构建一个投诉管理系统,并在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电话。

最新更新