laravel 查询结果怎么过滤掉某个字段?

users 表包含字段: id, name, age, email
select 语句可以这样:SELECT id,name,age FROM users WHERE email = xxx@qq.com 来获取idnameage字段。
但是我想排除 email 字段,结果是获取id name age 字段,而不用把不排除的挨个写出来,要如何写?

还有,在没有select语句下,怎么实现排除字段?

User::query()->select();
这里会出错:为定义 select 函数。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

可以在序列化时吧某些属性隐藏掉

 $users = User::query()->get()->makeHidden('name')->toArray();

或者获取指定字段

 $users =  User::query()->get(['name','id']);
4年前 评论
讨论数量: 3

User::select(‘id’, ‘name’, ‘age’)->get();

User::query()->orderBy(‘name’, ‘desc’);

4年前 评论

可以在序列化时吧某些属性隐藏掉

 $users = User::query()->get()->makeHidden('name')->toArray();

或者获取指定字段

 $users =  User::query()->get(['name','id']);
4年前 评论
颠倒的玉石

model 文件里写一个 hidden 不就好了,或者查询出来后用集合的 except

  protected $hidden = [
    'email',
];

或者查询出来的数据用集合筛选

     collect($user)->except(['email'])->all()
4年前 评论

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