首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5.4 :清点每个类别中的产品,并通过雄辩的查询对它们进行排序

Laravel 5.4 :清点每个类别中的产品,并通过雄辩的查询对它们进行排序
EN

Stack Overflow用户
提问于 2018-04-03 10:24:12
回答 3查看 4.3K关注 0票数 2

我有两个Models,一个是Product,另一个是ProductCategory

我和她都有关系

产品模型

代码语言:javascript
复制
public function productCategory() {
        return $this->belongsTo( ProductCategory::class, 'product_category_id' );
    }

产品类别模型

代码语言:javascript
复制
public function categoryProduct() {
        return $this->hasMany( Product::class, 'product_category_id' );
    }

现在每个类别都有一些类似于(cat-1 has 3 products, cat-2 has 7 products, cat-3 has 5 products)的产品。

我需要一个Eloquent query,这将得到4个类别,按计数的产品在每个类别。

为了快递。

代码语言:javascript
复制
cat-2 has 7 products
cat-3 has 5 products
cat-1 has 3 products

金克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-03 10:32:15

使用withCount(),然后使用orderBy()来使用single查询。

代码语言:javascript
复制
ProductCategory::with('categoryProduct')->withCount('categoryProduct')->orderBy('category_product_count','desc')->get();

才能拿到伯爵

代码语言:javascript
复制
ProductCategory::withCount('categoryProduct')->orderBy('category_product_count','desc')->get();
票数 6
EN

Stack Overflow用户

发布于 2018-04-03 10:35:04

然后,您可以尝试如下:

代码语言:javascript
复制
$rows= ProductCategory::withCount('categoryProduct')->get();

您可以通过以下方式访问该网站:

代码语言:javascript
复制
foreach ($rows as $row) {
echo $row->categoryProduct_count;
}

这是纯粹的雄辩

票数 1
EN

Stack Overflow用户

发布于 2018-04-03 10:28:24

假设您将$categories作为一个集合,那么您可以按函数定义一个自定义排序。

代码语言:javascript
复制
    $categories = ProductCategory::all()->with('categoryProduct'); //which will fetch you all categories with products

    $sorted = $categories->sortBy(function ($category, $key) {
        return count($category);
    });

doc链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49627696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档