2017-05-21 6 views
0

Laravel 5.3のOne to Manyリレーションモデルから更新を保存したいが、このエラーがある。ここで 関係モデルからの更新を保存する方法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); 

この方法で新しいjurnalとdjurnalを保存すると、正しく動作します。しかし、更新を保存しようとすると、エラーが表示されます。この更新データをデータベースに保存するにはどうすればよいですか?誰でも私を助けることができますか?

答えて

0

jurnal_idを使用してDjurnalsモデルを取得するため、モデルを直接保存する必要があります。

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

を交換

Djurnals::where('jurnal_id', $id)->first(); 

Djurnals::where('jurnal_id', $id)->get(); 

を交換

$jurnal->djurnals()->save($djurnal);新しく作成したモデルを保存する場合にのみ使用してください。

+0

ああ、持っています。しかし、なぜ私に別のエラーが表示されますか?メソッドsaveは存在しません –

+0

私の答えが更新されました。ループ内で 'get()'を 'first()'に置き換えてください – Sandeesh

関連する問題