【发布时间】:2019-10-08 08:43:22
【问题描述】:
我有以下功能可以从我的表Product_Colors 中查找具有相同颜色的产品,并且工作正常:
$colors = ProductColor::query()->
select('color_id', DB::raw("count(*) as amount"))
->groupBy('color_id')
->having('amount','>=', '3')
->get();
而且我有多对多的关系:
public function colors() {
return $this->belongsToMany('App\Color','product_colors');
}
现在我想获得所有具有相同 3 种颜色的产品。 我有这个问题:
$products = Product::whereHas('colors', function(Builder $query) { $query
->groupBy('color_id', 'product_id');},'>', '3')->get();
我什么也没得到,但我确信我有两种颜色相同的产品。有人可以帮助我,提示我做错了什么吗?
我有以下代码来获取所有超过 3 种颜色的项目:
$products = Product::has('colors', '>', 3)->with('colors')->get();
但我需要所有颜色超过 3 种颜色完全相同的颜色 例如:
"products": [
{
"id": 2,
"title": "net",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"colors": [
{
"id": 16,
"name": "Peru",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 2,
"color_id": 16
}
},
{
"id": 17,
"name": "Red",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 2,
"color_id": 17
}
},
{
"id": 20,
"name": "DarkTurquoise",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 2,
"color_id": 20
}
},
{
"id": 2,
"name": "MediumPurple",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 2,
"color_id": 2
}
}
]
},
{
"id": 3,
"title": "org",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"colors": [
{
"id": 2,
"name": "MediumPurple",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 3,
"color_id": 2
}
},
{
"id": 16,
"name": "Peru",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 3,
"color_id": 16
}
},
{
"id": 17,
"name": "Red",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 3,
"color_id": 17
}
},
{
"id": 20,
"name": "DarkTurquoise",
"created_at": "2019-10-08 07:36:42",
"updated_at": "2019-10-08 07:36:42",
"pivot": {
"product_id": 3,
"color_id": 20
}
}
]
},
【问题讨论】:
-
“所有具有超过 3 种颜色且颜色完全相同的颜色”背后的逻辑是什么,如果有两组满足此条件的颜色会发生什么?
-
这是我的任务。这段代码没有继续逻辑。这只是一个了解更好的 laravel 查询构建器的练习
标签: mysql laravel query-builder