全局隐藏数组中的属性或 JSON 中的转换 laravel?
Globally Hiding Attributes From Array Or JSON Conversion in laravel?
有时您可能希望限制包含在模型数组或 JSON 表单中的属性,例如密码。为此,请向您的模型添加一个隐藏的 属性 定义:
class User extends Model {
protected $hidden = ['password'];
}
这是特定于模型的。
有没有全局隐藏的方法?
即,我想从所有模型 json
结果中隐藏 deleted_at 和 created_by。
最简单的方法是创建基础模型。像这样:
class BaseModel extends Model {
protected $hidden = ['deleted_at', 'created_by'];
}
然后你所有的模型都从那个扩展:
class User extends BaseModel {
}
请注意,如果您想为特定模型添加一些隐藏字段,您还必须指定这两个全局隐藏属性:
class User extends BaseModel {
protected $hidden = ['deleted_at', 'created_by', 'password'];
}
如果这让您感到困扰,您可以从构造函数中合并全局属性:
class BaseModel extends Model {
private $globalHidden = ['deleted_at', 'created_by'];
public function __construct(array $attributes = array()){
$this->hidden = array_merge($this->globalHidden, $this->hidden);
parent::__construct($attributes);
}
}
有时您可能希望限制包含在模型数组或 JSON 表单中的属性,例如密码。为此,请向您的模型添加一个隐藏的 属性 定义:
class User extends Model {
protected $hidden = ['password'];
}
这是特定于模型的。
有没有全局隐藏的方法?
即,我想从所有模型 json
结果中隐藏 deleted_at 和 created_by。
最简单的方法是创建基础模型。像这样:
class BaseModel extends Model {
protected $hidden = ['deleted_at', 'created_by'];
}
然后你所有的模型都从那个扩展:
class User extends BaseModel {
}
请注意,如果您想为特定模型添加一些隐藏字段,您还必须指定这两个全局隐藏属性:
class User extends BaseModel {
protected $hidden = ['deleted_at', 'created_by', 'password'];
}
如果这让您感到困扰,您可以从构造函数中合并全局属性:
class BaseModel extends Model {
private $globalHidden = ['deleted_at', 'created_by'];
public function __construct(array $attributes = array()){
$this->hidden = array_merge($this->globalHidden, $this->hidden);
parent::__construct($attributes);
}
}