我尝试如果有记录就更新,如果没有记录就创建。问题是:
已记录病例:当数据库中已经有记录时,它会创建记录.
public function store(Request $request)
{
$time = $request->input('time');
foreach ($request->input('number') as $key => $value) {
Choice::UpdateOrCreate([
'user_id' => Auth::id(),
'time' => $time,
'topic_id' => $key,
'question_number' => $value,
]);
}
}
4条答案
按热度按时间olqngx591#
您必须向
UpdateOrCreate
传递两个参数,第一个是搜索记录的attributes
,第二个是我们拥有的方法文档中的values
:创建或更新与属性匹配的记录,并在其中填充值。
因此,如果只使用
user_id
搜索记录,则必须按如下方式执行:ykejflvf2#
使用此方法:
soat7uwm3#
根据crud UpdateOrCreate 中的Rest Update,如果未找到匹配记录,则创建一条记录。因此,Choice::UpdateOrCreate的格式必须如下所示
其中['user_id' =〉Auth::id(),'time' =〉$time,]是检查记录是否存在。
hs1ihplo4#
尝试将循环中的代码替换为:
这将搜索用户在特定时间的记录,如果没有,则创建一个,但如果有,则将更新其topic_id和question_number。