2017-05-21 115 views
0

我想在Laravel 5.3中保存一對多關係模型的更新,但是我有這個錯誤。如何從關係模型保存更新Laravel 5.3

FatalThrowableError in HasOneOrMany.php line 221: Type error: Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, instance of Illuminate\Database\Eloquent\Collection given, called in C:\xampp\htdocs\wismasejahtera\app\Http\Controllers\JurnalController.php on line 129

這裏是我的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); 

當我用這種方式來保存新的白晝和黃昏時,它可以正常工作。但是,當我嘗試保存更新時,會顯示錯誤。如何將此更新數據保存到數據庫?任何人都可以幫助我?

回答

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);只能在保存新創建的模型時使用。

+0

啊,知道了。但爲什麼它會讓我看到另一個錯誤?方法保存不存在 –

+0

更新了我的答案,在你的循環中用'first()'替換'get()' – Sandeesh