Vue 2 Laravel 5.3按列的值之一分组对象

时间:2017-01-17 04:43:04

标签: laravel-5.3 vuejs2

我的项目允许客户将商品放入购物车。其中每个项目与# 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>

1 个答案:

答案 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;
  }, {});
};

source

然而,将这些事情委托给数据库通常更有效,并且更不容易出错。