Php 查询:颜色、大小等可自定义变量的产品数量
我想从stock_reports表中制作一份报告,在该表中,我想用颜色、大小等变量显示每个产品的数量,这些变量基于每个批次创建的_。我使用了以下查询,但我需要一些改进Php 查询:颜色、大小等可自定义变量的产品数量,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想从stock_reports表中制作一份报告,在该表中,我想用颜色、大小等变量显示每个产品的数量,这些变量基于每个批次创建的_。我使用了以下查询,但我需要一些改进 $stockReport = DB::table('products') ->rightjoin('stock_reports','stock_reports.product_id','products.id') ->join('sizes','sizes.id','stock_rep
$stockReport = DB::table('products')
->rightjoin('stock_reports','stock_reports.product_id','products.id')
->join('sizes','sizes.id','stock_reports.size_id')
->join('colors','colors.id','stock_reports.color_id')
->select('products.product_name','stock_reports.created_at'
DB::raw('sum(quantity)'))
->groupby('stock_reports.created_at','products.product_name')
->orderby('stock_reports.created_at','desc')
->get();
输出应该是:
Name Quantity CREATED_AT
product_name1 XL-BLUE-15, L-RED-20 2019-08-12
product_name2 L-BLUE-15, S-RED-20 2019-08-12
product_name1 M-BLUE-15, L-RED-20 2019-08-13
我的表格结构:
产品:
股票期权报告
尺寸
颜色
首先,通过终端或手动创建模型
php artisan make:model stock_reports
php artisan make:model sizes
php artisan make:model products
php artisan make:model colors
在字典应用程序中添加到stock_reports.php文件
public function product()
{
return $this->belongsTo(products::class, 'product_id');
}
public function size()
{
return $this->belongsTo(sizes::class, 'size_id');
}
public function color()
{
return $this->belongsTo(colors::class, 'color_id');
}
将函数报告添加到products.php
public function reports()
{
return $this->hasMany(stock_reports::class, 'product_id');
}
最后,在您的控制中使用:
$stock_reports=stock_reports::
with('product')
->get()->sortBy('product.product_name')->sortBy('created_at');
foreach($stock_reports as $report)
{
$product_name=$report->product->product_name;
$size_name=$report->size->size_name;
$color_name=$report->color->color_name;
$qty_products=$report->product->reports()->count();
// use wherever you need to use it
}
结果:
Name Quantity CREATED_AT
T-shirt C x-Red-1 2019-09-11 18:55:12
Name Quantity CREATED_AT
T-shirt D xl-Blue-1 2019-09-11 18:55:12
Name Quantity CREATED_AT
T-shirt A xl-Blue-1 2019-09-12 18:55:12
Name Quantity CREATED_AT
T-shirt B x-White-1 2019-09-13 18:55:12
一些建议:
使用而不是->获取
使用外键
添加$stockReport时的结果是什么?
public function product()
{
return $this->belongsTo(products::class, 'product_id');
}
public function size()
{
return $this->belongsTo(sizes::class, 'size_id');
}
public function color()
{
return $this->belongsTo(colors::class, 'color_id');
}
public function reports()
{
return $this->hasMany(stock_reports::class, 'product_id');
}
$stock_reports=stock_reports::
with('product')
->get()->sortBy('product.product_name')->sortBy('created_at');
foreach($stock_reports as $report)
{
$product_name=$report->product->product_name;
$size_name=$report->size->size_name;
$color_name=$report->color->color_name;
$qty_products=$report->product->reports()->count();
// use wherever you need to use it
}
Name Quantity CREATED_AT
T-shirt C x-Red-1 2019-09-11 18:55:12
Name Quantity CREATED_AT
T-shirt D xl-Blue-1 2019-09-11 18:55:12
Name Quantity CREATED_AT
T-shirt A xl-Blue-1 2019-09-12 18:55:12
Name Quantity CREATED_AT
T-shirt B x-White-1 2019-09-13 18:55:12