2016-06-30 27 views
1

さまざまなピボット値を持つ特定のpresentアイテムを1つのorderに添付します。私のようなものを探しまわっています:もちろんLaravel添付問題

$order->presents()->attach(1,[ 
    ['price' => '2400, 'qty' => 2], 
    ['price => '1000, 'qty' => 4] 
    ]); 

その無効code.iを一つの項目1を添付することができます。

$order->presents()->attach(1,['price' => '2400, 'qty' => 2]); 

$order->presents()->attach(1,['price => '1000, 'qty' => 4]); 

しかし、私はもっと良い方法があるはずだと思い、することができます誰も私に束縛をする方法を教えてくれますか?

答えて

0

Look at the documentation私はあなたにほとんど解決策があるのを見ることができます。

ドキュメントを参照すると、array(id => [values])のような配列を使用する必要があります。あなたの場合:

$order->presents()->attach([ 
    1 => [ 
     'price' => 2400, 
     'qty' => 2 
    ], 
    .... 
]); 

このコードはテストされていません。

編集

あなたはLaravelフレームワークの深いダンジョンでattach()機能をチェックすると、それはまた、モデル、コレクションまたは整数を受け入れ見ることができます。さらに見ると、それを見ることができます(たぶん)IDの配列を受け入れることもできます。

/** 
* Attach a model to the parent. 
* 
* @param mixed $id 
* @param array $attributes 
* @param bool $touch 
* @return void 
*/ 
public function attach($id, array $attributes = [], $touch = true) 
{ 
    if ($id instanceof Model) { 
     $id = $id->getKey(); 
    } 

    if ($id instanceof Collection) { 
     $id = $id->modelKeys(); 
    } 

    $query = $this->newPivotStatement(); 

    $query->insert($this->createAttachRecords((array) $id, $attributes)); 

    if ($touch) { 
     $this->touchIfTouching(); 
    } 
} 

それが動作するかどうか知っているが、しようとしないでください:

$order->presents()->attach([1, 1], [[ 
      'price' => 2400, 
      'qty' => 2 
     ], [ 
      'price' => 1337, 
      'qty' => 420 
     ] 
    ] 
]); 
+0

ちょうど重複配列のキーは、PHPには有効ではないことに注意してください。私は 'foreach'ループを使ってデータを生成します(メソッドをアタッチする)ので、' foreach'の答えで提示したような配列を作成する方法はありません – alex

+0

あなたは正しいです!同じリソースを2回付けたいという気づきはありませんでした。私はもう少し研究をし、見つけた時に新しい答えを思いつきます。 –

+0

@alex私は自分の答えを更新しました。 –

関連する問題