【问题标题】:Get value with max amount in Laravel在 Laravel 中获取最大数量的价值
【发布时间】:2017-12-20 12:25:35
【问题描述】:

我正在使用laravel-page-view-counter 来计算我的产品的访问量,它工作得很好,我需要做的是通过他们的访问获取前 10 名产品的列表(获取访问次数最多的 10 个产品)。

这是我所拥有的:

$visits = Product::join('page-visits', function ($join) {
  $join->on('products.id', '=', 'page-visits.visitable_id');
})->get();
$sorted = $visits->sortBy(function ($product, $key) {
  return count($product['visits']);
});

但是它从最低的产品访问量返回到最高的产品(它显示访问量为 0 的产品到访问量为 100 次的产品)我需要显示的反向方法(首先访问量为 100 次的产品)。

【问题讨论】:

  • 很难理解,如果你使用简单的原始查询会更容易
  • @SagarGautam $visits 我的产品在他们的访问中出现在`page-visits` 表中。 $sorted 我对我的 $visits 查询进行了排序。难吗?
  • 好的,我已经添加了我的答案,如果有任何问题可以随时尝试:)

标签: php laravel


【解决方案1】:

您可以使用查询构建器和一些类似这样的原始查询轻松完成:

$visits = DB::table('products')
            ->join('page-visits','products.id','=','page-visits.visitable_id')
            ->select(DB::raw('count(visitable_id) as count'),'products.*')
            ->groupBy('id')
            ->orderBy('count','desc')
            ->take(10)
            ->get();

希望你能理解。

【讨论】:

  • 好吧,它似乎工作,但现在我无法获得每个产品的访问次数,它给了我 Undefined property: stdClass::$page_visits_formatted 的错误,然后我才能获得像 {{$visit->page_visits_formatted}} 这样的访问
  • 你应该使用 {{$visit->count}} 而不是 {{$visit->page_visits_formatted}} 因为 count 包含我上面添加的查询中的总访问次数
  • 这个计数是否会被格式化?格式化就像1.000 如果不是像1000
  • @mafortis 对不起,我不明白你在说什么格式化 :)
猜你喜欢
  • 2015-01-23
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多