请问如何过滤从数据模型中获得的所有数据中的某个个例?

比如users = User::all();
如果我想过滤掉users中所有user->name = "admin"的用户,请问怎么写好呢,写一个过滤函数还是模型有自带方法能直接过滤?
大概翻了下文档没有思路。。。求大神指点一下,十分感谢!
PS:因为我想写一个搜索判断,输入"a"就显示所有用户名包含"a"的用户

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

在查詢過程就過濾可以這麼做

$users = User::where([
    [ 'name', '<>', 'admin' ]
])->get();

若是要全部查回來再過濾可以

$users = $users->filter(function ($value, $key) {
    return $value->name !== 'admin';
});
6年前 评论
讨论数量: 5

从 sql 过滤
也可以在模型添加

// User.php
function isAdmin()
{
     return $this->name === "admin";
}

$users->filter->isAdmin

6年前 评论

在查詢過程就過濾可以這麼做

$users = User::where([
    [ 'name', '<>', 'admin' ]
])->get();

若是要全部查回來再過濾可以

$users = $users->filter(function ($value, $key) {
    return $value->name !== 'admin';
});
6年前 评论

@RryLee
User::where('name','like','%{$key}%')
->orderBy('updated_at','desc')
->get()
请问如果用sql的话,是像上面这样写吗?我想实现一个查找用户方法。。

6年前 评论

@leochien 请问,如果想实现一个查找用户的方法,根据输入的字符串查看用户名是否包含,where语句里这样写可以吗?
User::where('name','like','%{$key}%')
->orderBy('updated_at','desc')
->get()
谢谢~

6年前 评论

@qq3943 可以,不過要小心模糊查詢的效率問題

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!