我想在Laravel 5.3中保存一对多关系模型的更新,但是我有这个错误。
HasOneOrMany.php第221行中的FatalThrowableError: 类型错误:传递给Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: save()的参数1必须是Illuminate \ Database \ Eloquent \ Model的实例,给出的Illuminate \ Database \ Eloquent \ Collection实例,在C:中调用第129行的xampp \ htdocs \ wismasejahtera \ app \ Http \ Controllers \ JurnalController.php
这是我的Jurnals模型:
public function djurnals()
{
return $this->hasMany('App\DJurnals', 'jurnal_id');
}
这是我的Djurnals模型:
public function jurnals()
{
return $this->belongsTo('App\Jurnals');
}
public function rekenings()
{
return $this->belongsTo('App\Rekenings');
}
这是我的控制器:
$jurnal = Jurnals::find($id);
$jurnal->no_jurnal = $request->no_jurnal;
$jurnal->tgl_jurnal = $tglJurnalFix;
$jurnal->keterangan = $request->keterangan;
$jurnal->save();
//ini Array
$kode_rekening = $request->kode_rekening;
for($i=0; $i<count($kode_rekening); $i++){
$djurnal = Djurnals::where('jurnal_id', $id)->get();
$djurnal->kode_rekening = $request->kode_rekening[$i];
$djurnal->keterangan_rekening = $request->keterangan_rekening[$i];
$djurnal->d_k = $request->d_k[$i];
$djurnal->jumlah = $request->jumlah[$i];
if($request->d_k[$i] == 'D'){
$saldoRekKas = Rekenings::where('kode_rekening', 'like', '111%')
->increment('saldo', $request->jumlah[$i]);
}
else{
$saldoRekKas = Rekenings::where('kode_rekening', 'like', '111%')
->decrement('saldo', $request->jumlah[$i]);
}
$jurnal->djurnals()->save($djurnal);
}
return Redirect::to('jurnal');
错误在Controller的这一行:
$jurnal->djurnals()->save($djurnal);
当我使用这种方式保存新的jurnal和djurnal时,它可以正常工作。但是,当我尝试保存更新时,它显示错误。如何将此更新数据保存到数据库?有人可以帮帮我吗?
答案 0 :(得分:0)
由于您使用jurnal_id
获取Djurnals
模型,因此需要直接保存。
替换
Djurnals::where('jurnal_id', $id)->get();
使用
Djurnals::where('jurnal_id', $id)->first();
替换
$jurnal->djurnals()->save($djurnal);
使用
$djurnal->save();
$jurnal->djurnals()->save($djurnal);
仅在保存新创建的模型时使用。