问题描述
我有桌子,
ec_products : id |品牌 ID(来自 ec_brands 的 ID)| store_id(来自 mp_stores 的 id)
ec_brands:id
mp_stores:id
我正在计算属于每个品牌和商店的产品总数,使用 Laravel、Like 的关系和数量,
品牌模式,
<script>
var xaxis = [4,8,16,32,48];
var yaxis = [1.19,1.48,2.29,3.83,5.4];
var config = {
responsive: true
}
const arr = [];
for (let i = 0; i < xaxis.length; i++) {
let obj = {};
obj['x'] = [xaxis[i]];
obj['y'] = [yaxis[i]];
obj['mode'] = 'markers+text';
//obj['mode'] = 'markers';
obj['type'] = "scatter";
obj['name'] = `${zaxis[i]}`;
debugger
obj['text'] = `${zaxis[i]}`;
obj['textposition'] = 'right center ';
obj['textfont'] = {
family: 'Times New Roman',size: "16",};
obj['marker'] = {
size: 12,colorscale: 'red',symbol: 'star-dot'
}
arr.push(obj)
}
Plotly.newPlot("iframe",arr,layout,config);
}
店铺模式
public function products()
{
return $this->hasMany(Product::class,'brand_id')->where('is_variation',0);
}
在每个模型中,
public function products()
{
return $this->hasMany(Product::class,'store_id')->where('is_variation',0);
}
所以使用单独的表格来链接类别和产品。
ec_product_category_product:id | category_id(来自类别表)| product_id(来自我们的产品表)
最后一个问题,如何加入所有人,
我想根据请求参数列出每一个(品牌、商店、类别)和计数每一个产品。
喜欢
如果选择了任何品牌,则计算与该品牌相关的商店和类别。
如果选择了商店,则计算与该商店相关的品牌和类别。
如果选择了任何类别,则计算与该类别相关的商店和品牌。
建议或解决方案。
谢谢
解决方法
你应该总是用你想要操作的对象开始你的 Eloquent 查询,这里是产品,然后约束你的查询,
所以在你的控制器中:
$product_count = Product::when($request->category_id,function($query) use ($request){
$query->where('category_id',$request->category_id);
})
[...] //do that for each of your constraints
->count();
例如,如果您想对类别名称进行搜索,请使用 whereHas :
$product_count = Product::when($request->search,function($query) use ($request){
$query->whereHas('category',function($query) use ($request){
$query->where('name','like',"%$request->search%");
});
})
[...] //do that for each of your constraints
->count();