laravel 的Eloquent ORM裡$hidden的作用是什麼?
黄舟
黄舟 2017-05-16 16:48:27
0
3
515

$hidden是做什麼用的?最好能舉個例子說明一下

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(3)
巴扎黑

文檔寫的很明白了 轉換成數組或 JSON 時隱藏屬性

有時您可能想要限制能出現在陣列或 JSON 格式的屬性數據,例如密碼欄位。只要在模型裡增加 hidden 屬性即可

class User extends Model {

    protected $hidden = ['password'];

}
$user = user::find($userId);
dump($user);//里面是木有password字段的
大家讲道理

有時您可能想要限制模型陣列或 JSON 表單中包含的屬性,例如密碼。為此,請在您的模型中新增隱藏屬性定義

雷雷
PHPzhong

可以隱藏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的数组信息,只有其中一个字段。
}

這只是簡單的例子,還可以透過這個方法實現更複雜的格式操作。拋磚引玉了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板