当前位置: 首页 > 知识库问答 >
问题:

Laravel-雄辩-返回相关计数大于

禹德水
2023-03-14

我有两张桌子。

产品品牌

我试图用最多的产品返回前十大品牌型号。

我试过了。

Product::select('brand', DB::raw('count(brand) as count'))->groupBy('brand')->orderBy('count','desc')->take(10)->get();

但是它不返回孔模型,只返回

  • 品牌
  • 计数

我也试过

 return $brands = Brand::whereHas('products', function($q) {
           $q->count() > 10;
       })->get();

但是我得到了错误:

SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“brands.id”(SQL:选择count(*)作为从productswherebrandsid=products中的聚合

我的品牌模式

public function products()
    {
        return $this->hasMany('App\Product','brand');
    }

我的产品模型

public function manuf()
    {
        return $this->belongsTo('App\Brand','brand');
    }

共有2个答案

饶德本
2023-03-14

如果您使用的至少是Laravel 5.3,那么您应该能够使用withCount方法来完成此任务:

Brand::withCount('products')->orderBy('products_count', 'DESC')->take(10)->get();

其中,products是您关系的名称。这将在查询中为您提供一个新字段,products\u count,您可以根据该字段进行订购。

太叔英锐
2023-03-14

试试这个:

$brands = Brands::has('products', '>' , 10)->with('products')->get();
 类似资料:
  • 我有一个表,其中包括一列浏览器版本。我只是想从记录集中知道每种浏览器有多少种。所以,我需要这样结束:总记录:10;InternetExplorer 8:2;铬25:4;火狐20:4。(总计10) 这是我的两便士: 当然,它只包含3个浏览器,而不是每个浏览器的数量。我该怎么做呢?

  • 我想使用Laravel Eloquent完成任务。我在网上搜索过,没有找到任何有说服力的东西。有些人将groupBy()查询与查询生成器一起使用,如以下链接 但是我想创建这样的查询风格: 此代码仅返回第一个的计数。但是我要计算所有的。

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入

  • 我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca

  • 我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:

  • 我有一个雄辩的模特, 用户:用户(id、用户名、密码、电子邮件、状态) 简介:简介(id、用户id、名字、姓氏、性别、出生日期) 在控制器逻辑中,我急切地加载Profile模型。 我能做到, 或 但是怎么做呢,