【问题标题】:How to use a list of IDs in a query如何在查询中使用 ID 列表
【发布时间】:2021-04-28 17:48:10
【问题描述】:

我有一个查询过滤用户以按 ID 显示给管理员,现在我想扩展此查询以容纳更多 ID,例如 2、3、4、5 和 6,那么我如何将其排列在列表中

public function vipusers()
{
    $data['title'] = 'Vip Users';
    $is_super = !auth()->guard('admin')->user()->is_super;

    $data['users'] = Users::when($is_super, function ($q) {
        $q->where('id', '!=', 1);
    })
        ->orderBy('id', 'DESC')->get();

    return view('admin.dashboard.manage', $data);
}

【问题讨论】:

    标签: php sql laravel


    【解决方案1】:

    您可以使用whereIn :
    https://laravel.com/docs/8.x/queries#additional-where-clauses

    $ids = [2, 3, 4, 5, 6];
    $users = Users::whereIn('id', $ids)->orderBy('id', 'DESC')->get();
    ...
    

    【讨论】:

      【解决方案2】:

      扩展@Bazaim 的答案。

      考虑使用函数来遍历所有用户,方法是将表中的 id 传递给函数。考虑使用以下 sn-p。

      public function vipusers($id)
      {
          $data['title'] = 'Vip Users';
          $is_super = !auth()->guard('admin')->user()->is_super;
      
          $data['users'] = Users::when($is_super, function ($q) {
              $q->where('id', '!=', $id);
          })->orderBy('id', 'DESC')->get();
      
          return view('admin.dashboard.manage', $data);
      }
      

      【讨论】:

        【解决方案3】:

        这解决了我根据https://laravel.com/docs/8.x/queries#where-clauses想要实现的目标

        public function vipusers()
        {
            $data['title'] = 'Vip Users';
            $is_super = !auth()->guard('admin')->user()->is_super;
        
            $data['users'] = Users::when($is_super, function ($q) {
                $q->where('id', '!=', 1)
                  ->where('id', '!=', 2)
                  ->where('id', '!=', 3);
            })
                ->orderBy('id', 'DESC')->get();
        
            return view('admin.dashboard.manage', $data);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-06
          • 2021-06-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多