2016-11-21 16 views
0

hasManyとbelongsToの関係の間で、1行に "同期"(多対多の関係)を行う簡単な方法はありますか?このLaravelはhasManyとbelongsToを逆に同期しますか?

$opportunity->quotations()->sync($request->input('quotation_list', [])); 

よう

すなわち何かは以下のモデルが設定されている方法です。

public function quotations() 
{ 
    return $this->hasMany('App\Quotation'); 
} 

public function opportunity() 
{ 
    return $this->belongsTo('App\Opportunity'); 
} 

解決策の現在のハックは以下のとおりです。私は、エントリがすでに存在する場合、何かをより簡単にしたいと思っています。

$set = $opportunity->quotations()->get()->lists('id')->toArray(); 
if ($set <> '') 
{ 
    foreach ($set as $id) 
    { 
     $quotation = Quotation::find($id); 
     $quotation->opportunity_id = null; 
     $quotation->save(); 
    } 
} 
if ($request->quotation_list <> '') 
{ 
    foreach ($request->quotation_list as $id) 
    { 
     $quotation = Quotation::find($id); 
     $quotation->opportunity_id = $opportunity->id; 
     $quotation->save(); 
    } 
} 

答えて

0

hasMany()belongsTo()は、多くの、多くの、多くはないのです。だからここでassociate()メソッドを使用する必要があります。

+0

質問が更新されました。 –

関連する問題