Laravel 5.3 Vue 2 Laravel 5.3按列之一对对象进行分组';s值

Laravel 5.3 Vue 2 Laravel 5.3按列之一对对象进行分组';s值,laravel-5.3,vuejs2,Laravel 5.3,Vuejs2,我的项目允许客户将项目放入购物车。其中每个项目都与具有店铺id的店铺相关。我想在购物车视图中列出项目。但是,我希望将这些项目分组到具有相同店铺id的表下。因此,如果客户从3个不同的商店购买,cart视图中将有3个表,其中每个表由客户从该商店购买的相应项目组成。有什么好办法吗 这是我未完成的Cart.vue代码供您参考,但我认为它不会有多大帮助 <template> <div class="row"> <div class="col-md-12 car

我的项目允许客户将项目放入购物车。其中每个项目都与具有
店铺id的店铺相关。我想在购物车视图中列出项目。但是,我希望将这些项目分组到具有相同
店铺id
的表下。因此,如果客户从3个不同的商店购买,cart视图中将有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>

这应该可以通过对数据库进行分组查询来解决。如果您正在使用,您可以编写如下查询:

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

然而,一般来说,将这些事情委托给数据库更有效,也更不容易出错

var groupBy = function(xs, key) {
  return xs.reduce(function(rv, x) {
    (rv[x[key]] = rv[x[key]] || []).push(x);
    return rv;
  }, {});
};