三行代码  ›  专栏  ›  技术社区  ›  toffeegz

Where函数查询withcount not working LAVEL

  •  0
  • toffeegz  · 技术社区  · 1 周前

    这个很好用

    return Webinar::query()
            ->withCount('users')->orderByDesc('users_count')
            ->get();
    

    但我需要使用一个条件进行排序,但这不起作用

    return Webinar::query()
            ->where(function($query) use ($sort_by) {
                 if($sort_by == 0) {
                      return $query->withCount('users')->orderByDesc('users_count');
                 } else {
                      return $query->withCount('review')->orderByDesc('review_count');
                 }
            })
            ->get();
    

    return Webinar::query()
            ->where(function($query) use ($sort_by) {
                 if($sort_by == 0) {
                      return $query->withCount('users')->orderByDesc('users_count')
                             ->where('status', 2);
                 } else {
                      return $query->withCount('review')->orderByDesc('review_count')
                             ->where('status', 1);
                 }
            })
            ->get();
    

    但是where状态只起作用,而不使用COUNT。我希望有人能回答,非常感谢

    1 回复  |  直到 1 周前
        1
  •  1
  •   atma    1 周前

    你搬家怎么样 condition 外部代码 query

    if ($sort_by === 0) {
        $order = 'users_count';
        $count = 'users';
    } else {
        $order = 'review_count';
        $count = 'review';
    }
    
    return Webinar::query()
    ->withCount('users')->orderByDesc($order)
    ->get();