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

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