php - groupBy 仅返回 QueryBuilder laravel 5 中该特定 id 的 1 个结果集

标签 php mysql group-by laravel-5

我有 2 个模型:ProductCarousel。它们都建立了多对多关系。

我有一个pivotcarousel_product

在数据透视表中,我有很少的数据,如下所示:

id    carousel_id    product_id    created_at    updated_at
 1         2              2           --             --
 2         2              3           --             --
 3         2              4           --             --
 4         2              5           --             --
 5         2              6           --             --
 6         3              7           --             --
 7         3              8           --             --
 8         3              9           --             --
 9         3             10           --             --
10         3             11           --             --

现在我想检索 carousel_id = 2carousel_id = 3 中的所有产品

为此,我在 Controller 中使用查询生成器:

public function index()
{
    $carousels = Carousel::where('display', 'Enabled')->get();
    $products = DB::table('carousel_product AS cp')
                ->join('products AS p', 'p.id', '=', 'cp.product_id')
                ->join('carousels AS c', 'c.id', '=', 'cp.carousel_id')
                ->select(
                    'p.id AS prod_id',
                    'p.name AS prod_name',
                    'p.code AS prod_code',
                    'p.short_description AS prod_short_desc',
                    'p.price AS prod_price',
                    'p.discount_price AS prod_disc_price'
                )->groupBy('cp.carousel_id')->get();
    dd( $products );
    return view( 'home', compact( 'carousels', 'products' ) );
}

dd( $products ) 的输出是 27product_id

我想要该特定 carousel_id 的所有产品,并仅在该轮播的 View 中显示它。

P.S.:所有值均来自数据库。

我怎样才能实现这个目标?

最佳答案

GROUP BY 是一个聚合函数。您描述的行为是否准确地应该如何工作 - 它将具有相同 cp.carousel_id 的所有行合并为一个,并允许您执行诸如 MAX 之类的聚合函数>SUMAVG 等针对集合。

Now I want to retrieve all the products that are in carousel_id = 2 and carousel_id = 3

您需要 whereIn('carousel_id', [2, 3]) 来实现这一点。

关于php - groupBy 仅返回 QueryBuilder laravel 5 中该特定 id 的 1 个结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30785189/

相关文章:

php - 去掉括号前后的空格

php - 传输php类错误

php - 如何使用 mysql 中的数据在 PHP 中创建矩阵 (2)?

python - 对一小时内出现的单元格进行分组 - Groupby

excel - 没有聚合的数据透视表?

PHP/MySQL : Slowly iterate through 6k rows and for every row create new records - Algorithm

php - 深入了解 fusionchart

php - 在我的最后一个表行中选择不同的值

php - Mysql查询对两个表进行排序和合并

c# - LINQ 到 SQL : GroupBy() and Max() to get the object with latest date