如何在查询中使用 ID 列表
Posted
技术标签:
【中文标题】如何在查询中使用 ID 列表【英文标题】:How to use a list of IDs in a query 【发布时间】: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);
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于如何在查询中使用 ID 列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sangria 中使用 graphql 查询过滤列表响应