Home Articles

如何从关系模型Laravel 5.3中保存更新

Asked
Viewed 809 times
0

我想在Laravel 5.3中保存一对多关系模型的更新,但是我有这个错误 .

HasOneOrMany.php第221行中的FatalThrowableError:类型错误:传递给Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: save()的参数1必须是Illuminate \ Database \ Eloquent \ Model的实例,Illuminate \ Database \ Eloquent的实例\给出的集合,在第129行的C:\ 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时,它可以正常工作 . 但是,当我尝试保存更新时,它显示错误 . 如何将此更新数据保存到数据库?有人可以帮帮我吗?

1 Answer

  • 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); 仅在保存新创建的模型时使用 .

Related