获取每种类型分组项目的有限项目 laravel

Posted

技术标签:

【中文标题】获取每种类型分组项目的有限项目 laravel【英文标题】:Get the limited items of each type grouped items laravel 【发布时间】:2020-12-02 21:53:58 【问题描述】:

我有一个名为books 的表和另一个名为categories 的表,它在categories 中有item_id, type , and others .. 列,在enum (1/2/3) 中有type

现在我正在尝试获取每个组的有限项目,例如每种类型的 3 个项目 因此,为此我试图获得 9 个类别 3 每个类别都有不同的类型

喜欢这个

Illuminate\Database\Eloquent\Collection #2067 ▼
  #items: array:3 [▼
    1 => Illuminate\Database\Eloquent\Collection #2060 ▼
      #items: array:3 [▶]
    
    2 => Illuminate\Database\Eloquent\Collection #2055 ▼
      #items: array:3 [▶]
    
    3 => Illuminate\Database\Eloquent\Collection #2026 ▼
      #items: array:3 [▶]
    
  ]

到目前为止,我已经尝试过这个。

$categoryLists = Category::where('display_at_home', 1)->limit(3)->get()->grouBy('type');

但它没有做这项工作

【问题讨论】:

不确定这是否是您的问题,但您认为这是错误的:grouBy('type')。应该是groupBy('type') 【参考方案1】:

您可以按如下方式使用Eloquent Eager Limit 包。

class Book extends Model

    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
    
    ...


class Category extends Model

    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;

    ...

然后要获得您想要的关系,您可以这样做:

$categoryLists = Category::where('display_at_home', 1)
                         ->limit(3)
                         ->with(['books' => function($query) 
                             $query->limit('3');
                         ])
                         ->get();

【讨论】:

以上是关于获取每种类型分组项目的有限项目 laravel的主要内容,如果未能解决你的问题,请参考以下文章

通过每个项目至少有一个来分组

Grafana 条形图:可视化每个月每种产品类型的条目总和

商城项目13_查询分组关联属性删除新增查询分组未关联的属性调整会员服务获取分类关联的品牌

商城项目13_查询分组关联属性删除新增查询分组未关联的属性调整会员服务获取分类关联的品牌

如何使用 groupBy() 对 Collection 对象进行分组

第186天学习打卡(项目 谷粒商城28 获取分类属性分组 分组新增级联选择器 分组修改 级联选择器回显)