我的项目允许客户将商品放入购物车。其中每个项目与# Try setting a storing array
$new = array();
#loop through the array
foreach($array as $row) {
# Check if you have already set the sum for this name type
if(isset($new[$row['Name']]['Sum']))
# Add new and stored value together
$sum = $new[$row['Name']]['Sum'] + $row['Sum'];
else
# If not already set, set it
$sum = $row['Sum'];
# Start storing values into the new array. It's easiest to set the key
# as the name value so it saves to unique keys
$new[$row['Name']] = array(
'Name'=>$row['Name'],
'Percentage'=>$row['Percentage'],
'Sum'=>$sum
);
}
print_r(array_values($new));
的商店相关。我想列出购物车视图中的项目。但是,我希望这些项目在表格下分组,以用于具有相同shop_id
的项目。因此,如果客户从3个不同的商店购买,则购物车视图中将有3个表格,其中每个表格包含客户从该商店购买的相应商品。有没有办法做到这一点?
这是我未完成的Cart.vue代码供您参考,但我认为它不会有多大帮助
shop_id
我的购物车表结构:
<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>
答案 0 :(得分:0)
这应该可以使用GROUP BY查询到您的数据库来解决。如果您使用MySql,可以编写如下查询:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
如果您有javascript数组并且想要处理它,您可以编写类似于以下的方法:
var groupBy = function(xs, key) {
return xs.reduce(function(rv, x) {
(rv[x[key]] = rv[x[key]] || []).push(x);
return rv;
}, {});
};
然而,将这些事情委托给数据库通常更有效,并且更不容易出错。