laravel - updateOrcreate() 在我更新现有数据时记录新数据
问题描述
我想使用方法updateOrcreate()
,当数据是数据库的空新记录,但是当数据存在时是更新数据,
- 像下面的图像数据为空我想将新数据记录到数据库中
- 像下面的图像数据存在我想更新现有数据并记录到数据库
这是我的代码
public function simpanDataUn(Request $request)
{
$mapel_ujian_id = $request->mapel_ujian_id;
for($i=0; $i < count($mapel_ujian_id); $i++)
{
$arr = NilaiUjianAKhir::updateOrCreate([
'sekolah_id' => \Auth::user()->sekolah_id,
'siswa_id' => $request->id,
'mapel_ujian_id' => $request->mapel_ujian_id[$i],
'nilai_standar_daerah' => $request->nilai_standar_daerah[$i],
'predikat_standar_daerah' => $request->predikat_standar_daerah[$i],
'nilai_sekolah' => $request->nillai_sekolah[$i],
'predikat_nilai_sekolah' => $request->predikat_nillai_sekolah[$i],
'nilai_akhir' => $request->nilai_akhir[$i],
'predikat_nilai_akhir' => $request->predikat_nilai_akhir[$i],
],
[
'nilai_standar_daerah' => $request->nilai_standar_daerah[$i],
'predikat_standar_daerah' => $request->predikat_standar_daerah[$i],
'nilai_sekolah' => $request->nillai_sekolah[$i],
'predikat_nilai_sekolah' => $request->predikat_nillai_sekolah[$i],
'nilai_akhir' => $request->nilai_akhir[$i],
'predikat_nilai_akhir' => $request->predikat_nilai_akhir[$i],
]);
}
return redirect()->back()->with('success', 'Data UN berhasil di input');
}
我正在使用updateOrCreate()
方法,但是当我更新现有数据时,数据甚至创建新数据,而不是更新现有数据,如下图所示:
我的代码有什么问题?如何使用updateOrCreate()方法更新现有数据?请帮助我,谢谢
解决方案
也许您可以像这样更改代码:
public function simpanDataUn(Request $request)
{
$mapel_ujian_id = $request->mapel_ujian_id;
for($i=0; $i < count($mapel_ujian_id); $i++)
{
$arr = NilaiUjianAKhir::updateOrCreate([
'sekolah_id' => \Auth::user()->sekolah_id,
'siswa_id' => $request->id,
'mapel_ujian_id' => $request->mapel_ujian_id[$i],
],
[
'nilai_standar_daerah' => $request->nilai_standar_daerah[$i],
'predikat_standar_daerah' => $request->predikat_standar_daerah[$i],
'nilai_sekolah' => $request->nillai_sekolah[$i],
'predikat_nilai_sekolah' => $request->predikat_nillai_sekolah[$i],
'nilai_akhir' => $request->nilai_akhir[$i],
'predikat_nilai_akhir' => $request->predikat_nilai_akhir[$i],
]);
}
return redirect()->back()->with('success', 'Data UN berhasil di input');
}
就像@lagbox 说传递给 updateOrCreate 的第一个数组是查找记录的条件......如果它无法通过这些条件找到记录,它将创建一个新记录。sekolah_id
如果有相同的,您不会创建新的siswa_id
,mapel_ujian_id
对吗?然后可以更新其他字段
推荐阅读
- azure - 无法在 Azure 媒体服务下创建 AAD 应用。(服务主体认证)
- angular - Ionic 4 不允许在新标签功能中打开
- excel - 如何防止打开相同的工作表
- python - 是否可以从整体投票分类器中拟合出一个特定的估计器?
- javascript - 减少乘法函数
- excel - 粘贴到下一个空行
- c++ - std::accumulate C++20 版本
- unity3d - 在 Hololens 上部署的 Unity UWP 应用中使用 StorageFolder 的问题
- c++ - 测量在 C++ 中的 while 循环中运行的函数的执行时间(Windows)
- python - 无法将大小为 1665179 的数组重塑为形状 (512,512,3,3)