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的数组信息,只有其中一个字段。
}
文檔寫的很明白了 轉換成數組或 JSON 時隱藏屬性
有時您可能想要限制能出現在陣列或 JSON 格式的屬性數據,例如密碼欄位。只要在模型裡增加 hidden 屬性即可
可以隱藏Model查詢後結果toArray()後的任意內容,基本用法上面已經有人講了,我來說點平時用到的稍微高級的用法
1 隱藏某個字段。
2 你可以隱藏查詢是透過with方法取得的關係。
3 也可以與$appends連用改變返回資料格式。
如
有一個User表還有一個UserInfo表,查詢時需要User的所以欄位+UserInfo中的某個欄位ClomnX。但是又不希望傳回整個UserInfo的資訊。 (當然可以用簡單點的方式在控制器做個查詢中處理,我這裡只是舉個用Model統一處理的方式)
這只是簡單的例子,還可以透過這個方法實現更複雜的格式操作。拋磚引玉了。