繁体   English   中英

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

[英]How to save update from relationships model Laravel 5.3

我想在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');

错误是在控制器中的这一行:

$jurnal->djurnals()->save($djurnal);

当我使用这种方式保存新的日记本和日记本时,它可以正常工作。 但是,当我尝试保存更新时,它显示错误。 如何将该更新数据保存到数据库? 有人可以帮助我吗?

由于您使用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); 仅在保存新创建的模型时使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM