在这种情况下,我尝试使用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');
}
}
答案 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');
}