2016-08-14 7 views
0

私はこのモデルをピボットテーブルに同期させることができる2台のモデルがsaveである要求コントローラを持っています。私はまだコントローラの2つのモデルのどれを同期させるのか分かりません。私はDocumentsApproves M持つ:ピボットテーブルとMの関係approve_document2台のモデルを保存してピボットテーブルに同期する

モデル

ドキュメント:

public function approves() 
{ 
    return $this->belongsToMany('App\Models\Document', 'approve_document'); 
} 

が承認:

public function pendingDocuments() 
{ 
    return $this->belongsToMany('App\Models\Document', 'approve_document'); 
} 

コントローラー:

$document = new Document(); 
$approve = new Approve(); 
           //Request in the form 
$document->title = $request->title; 
$document->content = $request->content; 
$document->category_id = $request->category; 

$approve->approver_id = $request->approver; 

$approve->save(); 
$document->save();  

$document->approves()->sync([$approve],false); 

正直なところ私は今でも自分のsync配列の中に何を置くべきか分からない。それは私にエラーIllegal offset typeを投げつけます。私のエラーを訂正する助け?

更新

enter image description here

答えて

1

sync()方法装着するモデルのIDを受け付けます。

したがって、sync()の方法はapproveモデルのidが必要です。

$document->approves()->sync([$approve->id],false); 
//assuming id is the PK for your Approve model 

参考:Inserting Related Models

+0

はあなたが – jaysingkar

+0

する必要はありませんありませんが、あなたはこのエラーを取得している確認することができますか? – jaysingkar

+0

申し訳ありませんApproveモデルのインスタンスをコメントアウトしていることに気付かなかった。私は誤りがあります。 Approveモデルの現在のIDを取得しません。 '整合性制約違反:1452子行を追加または更新できません:外部キー制約が失敗しました(' webdev''approve_document'、CONSTRAINT 'approve_document_approve_id_foreign')FOREIGN KEY(' approve_id')REFERENCES '承認 '(' id')ON DELETE – Francisunoxx

関連する問題