如何显示由最大行数确定的用户

Posted

技术标签:

【中文标题】如何显示由最大行数确定的用户【英文标题】:How to display a user determined by the maximum number rows 【发布时间】:2015-08-12 20:21:00 【问题描述】:

我正在使用 laravel 4.2,我有如下表格,看起来像这样

ID|chosen(boolean('0','1'))|subject|user_id
 1|1                       |cricket|2
 2|0                       |cricket|3
 3|1                       |rugby  |2

我想选择具有最多选择行的 user_id,或者换句话说,选择在他们选择的列中具有最多 1 的用户。所以在这种情况下,用户 2 将是正确的结果。

我相信这就是答案

$table = DB::table('tablename')
         ->select(array(DB::raw('count(user_id) AS CountUser')))
          ->where('chosen', 1)
         ->orderBy('CountUser', 'desc')
         ->groupBy('user_id')
         ->first();

但是如何在我的视图中显示 user_id? 例如:

$table->user_id //should give me '2'

错误信息如下:

未定义属性:stdClass::$user_id

【问题讨论】:

【参考方案1】:

您只选择计数。试试这个

$table = DB::table('tablename')
     ->select(DB::raw('count(user_id) AS CountUser, user_id'))
      ->where('chosen', 1)
     ->orderBy('CountUser', 'desc')
     ->groupBy('user_id')
     ->first();

【讨论】:

我仍然收到相同的错误消息。我很困惑! 可以dd($table)查询后显示结果吗? 我得到了这个object(stdClass)#222 (1) ["CountUser"]=> int(2) 它计算了具有最大 1 数的用户,但由于某种原因我无法显示该用户 这一定是 Laravel 的 bug! 在查询后尝试dd(DB::getQueryLog())并显示结果

以上是关于如何显示由最大行数确定的用户的主要内容,如果未能解决你的问题,请参考以下文章