2016-12-19 116 views
0

我有這個laravel集合稱爲$ box_items合併兩個Laravel集合元素並替換

Collection {#320 ▼ 
    #items: array:3 [▼ 
    0 => array:6 [▼ 
     "img_alt" => "<span>Original</span> gifts" 
     "class" => "personalised-gifts" 
     "elements" => array:2 [▼ 
     0 => array:2 [▼ 
      "id" => 2638 
      "type" => "ARTICLE" 
     ] 
     1 => array:2 [▼ 
      "id" => 2100 
      "type" => "ARTICLE" 
     ] 
     ] 
    ] 
    1 => array:5 [▼ 
     "img_alt" => "<span>Love</span> gifts" 
     "class" => "love-gifts" 
     "elements" => array:3 [▼ 
     0 => array:2 [▼ 
      "id" => 1072 
      "type" => "CATEGORY" 
     ] 
     1 => array:2 [▼ 
      "id" => 6186 
      "type" => "ARTICLE" 
     ] 
     2 => array:2 [▼ 
      "id" => 1028 
      "type" => "CATEGORY" 
     ] 
     ] 
    ] 

另外,我還有一個收集所謂$元素,這$元素收集有關於在$ box_items收集的「元素」字段中的額外信息。

這是我$元素集合:

array:5 [▼ 
    0 => {#313 ▼ 
     +"type": "ARTICLE" 
     +"name": "Ceramic Mug" 
     +"resource_id": "2638" 
     +"seo": {#314 ▶} 
    } 

    1 => {#323 ▼ 
    +"type": "CATEGORY" 
    +"name": "Personalised Blankets" 
    +"category": {#325 ▼ 
     +"id": 1072 
     +"gallery_id": null 
     +"final": true 
    } 
    +"seo": {#326 ▶} 
    } 

    2 => {#327 ▼ 
     +"type": "ARTICLE" 
     +"name": "Circle Cushion" 
     +"resource_id": "2100" 
     +"seo": {#328 ▶} 
    } 

    3 => {#329 ▼ 
     +"type": "ARTICLE" 
     +"name": "Book" 
     +"resource_id": "6186" 
     +"seo": {#330 ▶} 
    } 

    4 => {#341 ▼ 
    +"type": "CATEGORY" 
    +"name": "Gifts for men" 
    +"category": {#342 ▼ 
     +"id": 1028 
     +"gallery_id": null 
     +"final": false 
    } 
    +"seo": {#343 ▶} 
    } 

] 

我想通過$ box_items元素域更換$元素類別和文章。

我想要這個最終結果:

Collection {#320 ▼ 
    #items: array:3 [▼ 
    0 => array:6 [▼ 
     "img_alt" => "<span>Original</span> gifts" 
     "class" => "personalised-gifts" 
     "elements" => array:2 [▼ 
     0 => {#313 ▼ 
      +"type": "ARTICLE" 
      +"name": "Ceramic Mug" 
      +"resource_id": "2638" 
      +"seo": {#314 ▶} 
     } 
     2 => {#327 ▼ 
      +"type": "ARTICLE" 
      +"name": "Circle Cushion" 
      +"resource_id": "2100" 
      +"seo": {#328 ▶} 
     } 
     ] 
    ] 
    1 => array:5 [▼ 
     "img_alt" => "<span>Love</span> gifts" 
     "class" => "love-gifts" 
     "elements" => array:3 [▼ 
     0 => {#323 ▼ 
      +"type": "CATEGORY" 
      +"name": "Personalised Blankets" 
      +"category": {#325 ▼ 
      +"id": 1072 
      +"gallery_id": null 
      +"final": true 
      } 
      +"seo": {#326 ▶} 
     } 
     1 => {#329 ▼ 
      +"type": "ARTICLE" 
      +"name": "Book" 
      +"resource_id": "6186" 
      +"seo": {#330 ▶} 
     } 
     2 => {#341 ▼ 
      +"type": "CATEGORY" 
      +"name": "Gifts for men" 
      +"category": {#342 ▼ 
      +"id": 1028 
      +"gallery_id": null 
      +"final": false 
      } 
      +"seo": {#343 ▶} 
     } 
     ] 
    ] 

編輯:誤差在線路如果($ article_element [ 'ID'] == $ extra_element->類別 - > ID);

foreach($articles_rows as &$article) 
     { 

      foreach($article['elements'] as &$article_element) 
      { 

       foreach($cats_and_arts as $extra_element) 
       { 

       if($extra_element->type == 'CATEGORY') 
       { 

        if($article_element['id'] == $extra_element->category->id)//Undefined index: id 
        { 

         $article_element = (array)$extra_element; 
        } 
       } 

       if($extra_element->type == 'ARTICLE') 
       { 

        if($article_element['id'] == $extra_element->article->id) 
        { 

         $article_element = (array)$extra_element; 

        } 
       } 

       } 
      } 
     } 
      dd($articles_rows); 

回答

0

試試看。它應該適合你。

foreach($box_items as &$box){ 
    foreach($box["elements"] as &$box_element){ 
     foreach($elements as $element){ 
     if($box_element->id == $element->id){ 
      $box_element = $element; 
     } 
     } 
    } 
} 
+0

但我在哪裏可以存儲所有信息?像最終的結果 –

+0

它會在$可用box_items項目被引用DD($ box_items)傳遞給看到更新 –

+0

好吧,這回我這個錯誤:「嘗試修改非對象的屬性」,因爲字段元素包含數組而不是對象... –