我有包含 article_id 字段的表评论、投票、 View 和喜欢。我试图从这些表中获取前 5 篇文章,根据它们中出现的次数。我将 $modelName 发送到我的函数,然后尝试从查询中获取结果。这就是我的查询现在的样子:

private function query($modelName) {
        $mostSomethingArticle = $modelName->all()->groupBy('article_id')->take(5);

        return $mostSomethingArticle;

      }

现在,我得到了这样的结果:
Collection {#398 ▼
  #items: array:5 [▼
    5 => Collection {#377 ▼
      #items: array:5 [▶]
    }
    2 => Collection {#376 ▼
      #items: array:1 [▶]
    }
    6 => Collection {#397 ▼
      #items: array:3 [▶]
    }
    1 => Collection {#396 ▼
      #items: array:1 [▶]
    }
    7 => Collection {#395 ▼
      #items: array:5 [▶]
    }
  ]
}

我想知道如何进行查询,以 'desc' 顺序获得前 5 个结果。

最佳答案

如果将来有人需要它,我将发布我的解决方法,而不是传递 $modelName ,我决定从 $request 获取表的名称,然后执行如下查询:

$result = DB::table($request['option'])
                ->select(DB::raw('article_id'), DB::raw('count(*) as count'))
                ->groupBy('article_id')
                ->orderBy('count', 'desc')
                ->take(5)
                ->get();

关于php - Laravel - 按出现次数获得前 5 名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37407670/

10-13 01:28