Laravel 5.6如果存在任何用户记录,如何删除

Laravel 5.6如果存在任何用户记录,如何删除,laravel,eloquent,Laravel,Eloquent,我试图在这种情况下使用updateOrCreate,但没有成功。这就是为什么我要用这个。我将在存储数据之前检查数据库。如果有此用户的任何记录,我将删除该记录。如果没有任何记录,我将创建记录。问题是如果有任何用户记录,如何删除 您的函数将如下所示 public function store(Request $request,Choice $choice){ $time = $request->input('time'); $choice = Choice::where('us

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


您的函数将如下所示

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

如果有任何困惑,请随时询问,我希望您能理解。

您只需通过用户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');

}

在其他情况下,为什么要使用dd?这只会停止进程,你在数组中使用的另一个东西是delete,你需要在雄辩的object中使用它,你救了我的命。谢谢你,先生。但是您是如何删除所有user\u id的记录的?它将只删除user\u id的记录,对吗?只需查看else语句后的行,它将删除当前用户的所有选择user@SagarGautam冗余代码。无需执行记录检查即可删除它们。@Waleed如果我们需要删除所有记录,然后创建新记录,则您的答案是理想答案,但稍后可能需要删除一些选项,保留一些选项并添加新选项,则我们需要检查记录是否存在;)@然后我们将使用WhereNot或NotExist子句来防止删除这些文件,但编写冗余代码是不好的。
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');

}