Мой проект позволяет клиентам класть товары в корзину. где каждый предмет относится к магазину с shop_id
. Я хотел бы перечислить товары в корзине. Однако я хочу, чтобы эти элементы были сгруппированы в таблице для тех, у кого одинаковые shop_id
. Таким образом, если клиент купил в 3 разных магазинах, в представлении корзины будет 3 таблицы, каждая из которых состоит из соответствующих товаров, которые клиент купил в этом магазине. Есть ли хороший способ сделать это?
Вот мой незавершенный код Cart.vue для справки, но я не думаю, что он может сильно помочь
<template>
<div class="row">
<div class="col-md-12 cart-container">
<table class="table table-hover" v-for="cart in carts">
<thead>
<tr>
<th>{{cart.shop.name}}</th> //cart includes shop by eloquent
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="cart-img-wrapper">
<img class="cart-img" :src="cart.product_choice.img1">
</div>
</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
<script>
export default {
data(){
return{
carts:{},
}
},
props:[
],
mounted(){
this.getCartItems()
},
updated(){
},
methods:{
getCartItems(){
var vm = this
vm.$http.get('/getCartItems/').then((response)=>{
vm.carts = response.data
});
},
},
computed:{
}
}
</script>
структура таблицы моих тележек:
Schema::create('carts', function (Blueprint $table) {
$table->increments('id');
$table->integer('product_id')->unsigned();
$table->integer('product_choice_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->integer('shop_id')->unsigned();
$table->integer('qty');
$table->integer('complete')->default(0);
$table->timestamps();
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade')
->onUpdate('cascade');
$table->foreign('product_id')
->references('id')
->on('products')
->onDelete('cascade')
->onUpdate('cascade');
$table->foreign('shop_id')
->references('id')
->on('shops')
->onDelete('cascade')
->onUpdate('cascade');
$table->foreign('product_choice_id')
->references('id')
->on('product_choice')
->onDelete('cascade')
->onUpdate('cascade');
});