2016-09-29 25 views
0

をループ。私は、それらのそれぞれをコンテナに関連付ける必要があります。は、私はちょうどこのような配列を持つ配列

だから私はこの試みた:

foreach ($data['plates'] as $index => $element) { 
    //Don't worry about the container_id. 
    $plates = Plate::find($element['plate_id'])->plateContainer()->associate($data['container_id'])->save(); 
} 

をしかし、この作業を取得するように見えることはできません。私が間違っていたり、行方不明になっていることは何ですか?モデル間の

FYI-関係

プレートモデル

public function plateContainer() 
{ 
    return $this->belongsTo('App\Models\PlateContainer'); 
} 

PlateContainerモデル

public function plates() 
{ 
    return $this->hasMany('App\Models\Plate'); 
} 

更新#1:配列は、後にAngularJSから来ているシムを提出するプレフォーム。ごめんなさい。

更新#2:私は次のような試みをしました。

foreach ($data['plates'] as $element) 
{ 
    foreach ($element as $value) 
    { 
     $plates = Plate::find($value)->plateContainer()->associate($data['container_id'])->save(); 
    } 
} 

...しかし、それでもうまくいきません。 DBを確認すると、最初のプレートが指定されたコンテナで更新されたことが示されます。

私はそれだけで1

+0

それはjsの配列やPHPの配列ですしましたか? – Pete

+0

ここにはJavaScriptがタグ付けされていますか? – callback

+0

@callback申し訳ありません。私は言及するのを忘れた。 AngularJSからの配列。投稿を更新します – user3641381

答えて

1

あなた$data['plates'] 2つの連想配列を含ん示すdd($value);を試みた:[0] => {...}などと[1] => {...}など。 そのためにはネストされたループが必要です。

for ($i=0; $i<count($data['plates']); $i++) { 
    foreach ($data['plates'][$i] as $index => $element) { 
    //Don't worry about the container_id. 
    $plates = Plate::find($element['plate_id'])->plateContainer()->associate($data['container_id'])->save(); 
    } 
} 
+0

ありがとうございますが、3つ以上の要素があったらどうなりますか? – user3641381

+0

私の答えを更新しました。ループ制限をハードコーディングする代わりに、代わりにcount()関数を使用して配列の要素数を数えます。 –

+0

もう一度試しました。それは不思議です、それは特定の容器で1枚のプレートを更新するだけです。私は再び私のポストを更新しました。 – user3641381

0

何かがオフでした。

foreach ($data['plates'] as $index => $element) { 


    $plates = Plate::find($element['plate_id'])->plateContainer()->associate($data['container_id'])->save(); 
} 

はトリック

関連する問題