【发布时间】:2019-11-29 15:38:53
【问题描述】:
我想用 Laravel 创建一个序列化程序。目前,我有我的模型 (CountryEntity),具有 getSingleCountry() 隐藏特定字段 (is_active) 的功能。
型号
class CountryEntity extends Model
{
public $table = "countries";
protected $fillable = ['id', 'name', 'code', 'language', 'is_active'];
public $timestamps = false;
public function getSingleCountry()
{
$this->makeHidden['is_active'];
return $this;
}
}
控制器
public function show($id)
{
$country = $this->country_repository->getById($id);
$country = $country->getSingleCountry();
return Response::json(['type' => 'success', 'message' => 'Get country',
'data' => $country, 'status' => 200], 200);
}
但“is_active”字段始终可见...
【问题讨论】:
-
为什么不在
CountryEntity模型中使用protected $hidden = ['is_active'];?这就是它的作用;转换为JSON时隐藏字段。另外,这似乎是错误的语法:$this->makeHidden['is_active'];,不会是$this->makeHidden(['is_active']);(调用方法,你需要使用()) -
谢谢@TimLewis!固定的 !我想在我的模型中有很多“序列化器”,有时“is_active”会被隐藏,有时不会:这就是我没有在 $hidden 中推送“is_active”的原因。
-
没问题!是的,这是有道理的。另外,请不要在问题中添加解决方案。在下面添加一个新答案,说明您是如何修复它的,最终您可以接受并正确关闭此问题。否则,这可能会作为“拼写错误”问题而被关闭(因为您刚刚错过了方法调用中的
())