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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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

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

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

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

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

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

$users->filter->isAdmin

5年前 评论

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

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

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

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

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

5年前 评论

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

5年前 评论

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

5年前 评论

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