Laravel 5.6如何删除用户记录

时间:2018-08-13 03:30:15

标签: laravel eloquent

  

在这种情况下,我尝试使用updateOrCreate,但是没有用。这就是为什么我正在使用它。在存储数据之前,我将检查数据库。如果有该用户的任何记录,我将删除该记录。如果没有任何记录,我将创建记录。问题是如果有用户记录,如何删除。

public function store(Request $request,Choice $choice){
    $time = $request->input('time');
    $user = Choice::where('user_id','=',Auth::id())->first();
    if ($user === null) {
        foreach ($request->input('number') as $key => $value) {
            Choice::create([
                'user_id' => Auth::id(),
                'time'  => $time,
                'topic_id' => $key,
                'question_number' => $value,
                ]);
            }
        return redirect()->route('choices.index');
    }
    else{
        $choices = Choice::where('user_id',Auth::id())->orderBy('id')->get()->toArray();
        dd($choices);
        foreach ($choices as $index) {
            $index->delete();
        }
        foreach ($request->input('number') as $key => $value) {
            Choice::create([
                'user_id' => Auth::id(),
                'time'  => $time,
                'topic_id' => $key,
                'question_number' => $value,
                ]);
            }
        return redirect()->route('choices.index');
    }
}

2 个答案:

答案 0 :(得分:0)

您的功能将如下所示,

public function store(Request $request,Choice $choice){
    $time = $request->input('time');
    $choice = Choice::where('user_id','=',Auth::id())->first();
    if ($choice === null) {
        foreach ($request->input('number') as $key => $value) {
            Choice::create([
                'user_id' => Auth::id(),
                'time'  => $time,
                'topic_id' => $key,
                'question_number' => $value,
                ]);
            }
    }
    else{
        $choices = Choice::where('user_id',Auth::id())->delete();

        foreach ($request->input('number') as $key => $value) {
            Choice::create([
                'user_id' => Auth::id(),
                'time'  => $time,
                'topic_id' => $key,
                'question_number' => $value,
                ]);
            }
    }
   return redirect()->route('choices.index');
}

如果有任何疑问,请随时询问。

答案 1 :(得分:0)

您可以简单地通过用户ID调用delete,这将确保是否有以前的记录将被删除。

public function store(Request $request,Choice $choice){

$time = $request->input('time');

// delete records which belong to user
Choice::where('user_id', Auth::id())->delete();

// add new records
foreach ($request->input('number') as $key => $value) {
    Choice::create([
        'user_id' => Auth::id(),
        'time'  => $time,
        'topic_id' => $key,
        'question_number' => $value,
    ]);
}

return redirect()->route('choices.index');

}