我正试图根据在该产品上创建的库存数量来选择最畅销的产品。产品的库存单位越多=销售量越大。
我的产品列表如下:
Schema::create('product_list', function (Blueprint $table) {
$table->increments('id');
$table->decimal('cost', 9, 2)->default(00.00);
$table->integer('product_category')->unsigned(); # IE Bespoke/Static/Dynamic
$table->integer('product_type')->unsigned(); # IE Themes(Custom Or Not)/Number of pages
$table->integer('product_score')->default(0); # How many favourites does it have?
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
$table->index(array('product_category', 'product_type'));
$table->foreign('product_category')->references('id')->on('product_categories');
$table->foreign('product_type')->references('id')->on('product_types')->onDelete('cascade');
});
我的产品目录如下:
Schema::create('product_skus', function (Blueprint $table) {
$table->increments('id');
$table->string('reference');
$table->integer('product_id')->unsigned();
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
$table->index(array('product_id'));
$table->foreign('product_id')->references('id')->on('product_list')->onDelete('cascade');
});
以下是我迄今为止所做的努力,用雄辩的-不要太在意其他加入,只是让畅销书工作:
$topSellers = DB::table('product_list')->join('product_skus', 'product_skus.product_id', '=', 'product_list.id')
->groupBy('product_skus.product_id')
->limit(5)
->get()
->all();
这给了我这个错误:
sqlstate[42000]:语法错误或访问冲突:1055'iezonsolutions.product_list.id'不在group by(42000)中
我怎样才能找到最畅销的商品?我在每件商品售出时都会创建一个SKU,这是一种跟踪畅销商品的方法,同时也为用户提供了独特的跟踪能力。
更新以显示关系
product_skus
有一个外键
product_id
与
product_list
表列
id
. 我想根据与产品ID的关系对库存单位进行分组。大多数sku被分组到单个产品ID,我想从
产品清单
桌子
$topSellers = DB::table('product_skus')->join('product_list', 'product_skus.product_id', '=', 'product_list.id')
->orderBy('product_skus.product_id')
->limit(5)
->get()
->all();
现在正在对正确的关系进行分组,但是,它给了我一个输出
array:3 [â¼
0 => {#725 â¼
+"id": 2
+"reference": "A400IEZON_"
+"product_id": 2
+"created_at": "2019-01-16 16:37:16"
+"updated_at": "2019-01-16 16:37:16"
+"cost": "100.00"
+"product_category": 1
+"product_type": 2
+"product_score": 0
+"rating": 0
+"down_payment": "10.00"
}
1 => {#726 â¼
+"id": 3
+"reference": "C400IEZON_"
+"product_id": 3
+"created_at": "2019-01-16 16:37:25"
+"updated_at": "2019-01-16 16:37:25"
+"cost": "150.00"
+"product_category": 1
+"product_type": 3
+"product_score": 0
+"rating": 0
+"down_payment": "10.00"
}
2 => {#727 â¼
+"id": 3
+"reference": "C400IEZON_"
+"product_id": 3
+"created_at": "2019-01-16 16:37:25"
+"updated_at": "2019-01-16 16:37:25"
+"cost": "150.00"
+"product_category": 1
+"product_type": 3
+"product_score": 0
+"rating": 0
+"down_payment": "10.00"
}
]
我想计算所有这些,所以这里,产品
身份证件
3应显示为顶部产品,其次是产品2。