【问题标题】:Hide filled in model from Laravel [closed]从 Laravel 隐藏填充模型 [关闭]
【发布时间】: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”的原因。
  • 没问题!是的,这是有道理的。另外,请不要在问题中添加解决方案。在下面添加一个新答案,说明您是如何修复它的,最终您可以接受并正确关闭此问题。否则,这可能会作为“拼写错误”问题而被关闭(因为您刚刚错过了方法调用中的 ()

标签: php laravel laravel-6


【解决方案1】:

这里的问题是在方法调用中缺少()。这一行:

$this->makeHidden['is_active'];

没有明确地做任何事情。这并没有引发Undefined index 错误,这有点令人惊讶,但无论如何。

当尝试调用某个Class的方法时,需要使用()

$this->makeHidden(['is_active']);

makeHidden() 方法接受参数数组以临时设置到模型上的protected $hidden,当模型转换为JSON 和其他序列化时隐藏它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多