Reputation: 93
I want to use method updateOrcreate()
, when data is an empty new record to the database, but when data is existing is updated data,
this is my code
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');
}
I'm using updateOrCreate()
method, but when i UPDATED existing data, the data
and even create new data, not updated existing data, like image below:
What part is wrong from my code? how to updated existing data using updateOrCreate() method? please help me, thanks
Upvotes: 0
Views: 660
Reputation: 4001
Maybe you can change your code like this :
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');
}
Like @lagbox say the first array passed to updateOrCreate are the where conditions to find a record ... if it can't find a record by those conditions it will create a new one. You won't create the new one when there's same sekolah_id
, siswa_id
or mapel_ujian_id
right? Then the other field can be updated
Upvotes: 1