Как использовать данные из другой коллекции для отображения в одной строке таблицы, содержащей продукты и параметры продукта в другой коллекции в блейд-файле - PullRequest
0 голосов
/ 14 марта 2020

Поэтому я использую laravel 5.4 и выбираю заказы из таблицы orders , и каждый заказ имеет несколько продуктов, которые хранятся в таблице orders_products с orders_id как внешний ключ и таблица. Теперь некоторые продукты имеют переменные параметров, такие как размер и цвет, хранящиеся в другой таблице orders_product_options . На странице сведений о заказе я получаю продукты, выпущенные для конкретного orders_id , и параметры, связанные с каждый продукт. Проблема в том, что я могу отображать продукты на странице представления в таблице, используя foreach, но я хочу отобразить переменную параметров продукта в той же строке, что и продукт. некоторые из продуктов один вариант, а некоторые имеют несколько вариантов. Пожалуйста, помогите мне отобразить продукт и опции в таблице.

Это мои коллекции, которые я использую в представлении

"product" => Collection {#201 ▼
#items: array:1 [▼
  0 => {#223 ▼
    +"_id": 9
    +"created_at": "2020-02-27 17:06:40"
    +"updated_at": "2020-02-27 17:06:40"
    +"products_id": 52
    +"orders__id": 5
    +"name": "Cap"
    +"price": 90.0
    +"status": 1
    +"quantity": 1
    +"custom_product_id": "UN727"
  }
]

}

 "options" => array:1 [▼
0 => Collection {#220 ▼
  #items: array:2 [▼
    0 => {#225 ▼
      +"_id": 2
      +"created_at": "2020-02-27 17:06:40"
      +"updated_at": "2020-02-27 17:06:40"
      +"ordered_products__id": 9
      +"name": "Color"
      +"value_name": "Green"
      +"addon_price": 0.0
    }
    1 => {#226 ▼
      +"_id": 3
      +"created_at": "2020-02-27 17:06:40"
      +"updated_at": "2020-02-27 17:06:40"
      +"ordered_products__id": 9
      +"name": "Size"
      +"value_name": "Large"
      +"addon_price": 0.0
    }
  ]
}

]

 <table class="table">
        <thead>
                      <tr>
            <th>Product Name</th>
                @if(!empty($order['options']))
            <th>View Option Values</th>

            @endif
        </tr>
        </thead>
        <tbody>
             @foreach($order['product'] as $product)

        <tr>

            <td><strong>{{$product->name}}</strong></td>
         <td>
                                <a href="{{ route('order.edit',$product->_id) }}" class="btn btn-sm btn-icon btn-success"><i class="fa fa-eye"></i></a>
                            </td>
          </tr>

      @endforeach

        </tbody>
    </table>

В настоящее время я использую другую страницу, чтобы показать варианты продукта. Есть ли способ показать оба продукта и опции на одной странице. Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

В конце концов я понял это, я просто сравнил product_id в обеих коллекциях

 <table class="table">
        <thead>
                      <tr>
            <th>Product Name</th>
            <th>Quantity</th>
            @if(!empty($order['options']))
            <th>Values</th>
            <th>Values</th>

            @endif
        </tr>
        </thead>
        <tbody>
             @foreach($order['product'] as $product)

        <tr>

            <td><strong>{{$product->name}}</strong></td>
            <td><strong>{{$product->quantity}}</strong></td>

                        @foreach($order['options'] as $opt)
                         @foreach($opt as $option)

                       @if($product->_id == $option->ordered_products__id)  
                 <td><strong>{{$option->name}}:{{$option->value_name}}</strong></td>
                     @endif
                          @endforeach  
                           @endforeach  
          </tr>

      @endforeach

        </tbody>
    </table>

надеюсь, что это поможет кому-то еще в будущем

0 голосов
/ 15 марта 2020

попробуйте

$order=Order::with('products.options')->find($orderId);

в вашем клинке

 <table class="table">
        <thead>
                      <tr>
            <th>Product Name</th>
                @if(!empty($order['options']))
            <th>View Option Values</th>

            @endif
        </tr>
        </thead>
        <tbody>
             @foreach($order->products as $product)

        <tr>

            <td><strong>{{$product->name}}</strong></td>
         <td>
                                <a href="{{ route('order.edit',$product->_id) }}" class="btn btn-sm btn-icon btn-success"><i class="fa fa-eye"></i></a>
                            </td>

                 @foreach($product->options as $option)
                     <td>{{$option->name}}:{{$option-> value_name}}</td>
                 @endforeach

              </tr>
      @endforeach

        </tbody>
    </table>
...