搜索

首页  >  问答  >  正文

laravel 的Eloquent ORM里$hidden的作用是什么?

$hidden是干什么用的?最好能举个例子说明一下

黄舟黄舟2797 天前544

全部回复(3)我来回复

  • 巴扎黑

    巴扎黑2017-05-16 16:50:27

    文档写的很明白了 转换成数组或 JSON 时隐藏属性

    有时您可能想要限制能出现在数组或 JSON 格式的属性数据,比如密码字段。只要在模型里增加 hidden 属性即可

    class User extends Model {
    
        protected $hidden = ['password'];
    
    }
    $user = user::find($userId);
    dump($user);//里面是木有password字段的

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-16 16:50:27

    有时您可能希望限制模型数组或 JSON 表单中包含的属性,例如密码。为此,请向您的模型添加隐藏属性定义

    雷雷

    回复
    0
  • PHPz

    PHPz2017-05-16 16:50:27

    可以隐藏Model查询后结果toArray()后的任意内容,基本用法上面已经有人讲了,我来说点平时用到的稍微高级的用法
    1 隐藏某个字段。
    2 你可以隐藏查询是通过with方法获取的关系。
    3 还可以与$appends连用改变返回数据格式。

    有一个User表还有一个UserInfo表,查询时需要User的所以字段+UserInfo中的某个字段ClomnX。但是又不希望返回整个UserInfo的信息。(当然可以用简单点的方式在控制器做个查询中处理,我这里只是举个用Model统一处理的方式)

    class User extends Model {
    
        protected $hidden = ['userInfo'];
        
        protected $appedns = ['ClomnX']
        //声明一个关系,user和userInfo是一对一的关系
        public function userInfo()
        {
            return $this->hasOne(UserInfo::class);
        }
        
        public function getClomnXAttribute()
        {
            //判断使用了with方法关联了UserInfo。
            if (isset($this->getRelations()[UserInfo])) {
                return $this->UserInfo->ClomnX;
            } else return null;
        }
    class TestController
    {
        $user = user::with('userInfo')->find($userId);
        dump($user->toArray());//返回中没有UserInfo的数组信息,只有其中一个字段。
    }
    

    这只是简单的例子,还可以通过该方法实现更复杂的格式操作。抛砖引玉了。

    回复
    0
  • 取消回复