2017-10-31 7 views
-1

私はテーブルpeoplescountriesとピボットテーブルcountry_peopleを持っています。ピボットテーブルの属性はcountries_idpeoples_idnumberです。私はピボットテーブルに外部キーを取得することができますが、私は番号に挿入することはできません。私はこれをどのようにして行うのですか?それはヨーヨーのように見えるピボットテーブルの追加属性にデータを挿入

人々モデル

public function countries() 
    { 
     return $this->belongsToMany('App\Country')->withPivot('number') 
     ->withTimestamps(); 
    } 

国モデル

public function peoples() 
    { 
     return $this->belongsToMany('App\People')->withPivot('number') 
     ->withTimestamps(); 
    } 

コントローラ

$people = new People(array(
     'quantity' => $request->get('quantity'), 

    )); 

    $people->save(); 
    $order->countries()->sync($request->get('id')->attach('quantity')); 
+0

「数量」あなたはここに入力ミスがありますか?それはあなたのアプリケーションにありますか? –

+0

@AndyHolmes、それは私のアプリケーションにはありません。おそらく私はここでコードをきれいにしようとしていました。 –

答えて

0

更新メソッドを結合しています。詳細はhttps://laravel.com/docs/5.5/eloquent-relationships#updating-many-to-many-relationshipsをご覧ください。あなたのケースでは

、試してみてください。

$ order->国を() - >($要求 - > GET( 'ID')、[ '数' => $人々[ '数量を添付']));

あなたが同期するのではなく、添付し、使用したい場合:

$ order->国() - >同期([$要求 - >( 'ID')=>を取得[」 number '=> $ people [' quantity ']]);

0

ピボットテーブルに追加の列を追加する場合は、配列として配列を渡すことができます。例:

$id = intval($request->get('id'));   
$order->countries()->sync($id => ['number' => $quantity]); //assuming you have saved the value of number in quantity 

詳細については、https://laravel.com/docs/5.5/eloquent-relationshipsをご覧ください。

また、以前のリレーションシップが配列に指定されていない場合、syncを使用すると以前のリレーションシップが削除されることに注意してください。これが起こらないようにするには、syncWithoutDetachingを使用してください。

関連する問題