-1

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

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

这是我的创建功能:

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');
4

1 回答 1

0

如果Complaint是一个 Eloquent 模型,你需要将一个数组传递给create一个请求对象,而不是$data一个请求。不知道您为什么要尝试创建 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你了。

于 2020-10-17T18:52:09.330 回答