我有一个雄辩的口才模型,具有隐藏 payload
字段
在某些地方,我想将该字段包含在JSON表示中。我用makeVisible方法做到这一点:
$models->makeVisible('payload');
但是我认为这不是很好的OOP代码(SRP,DIP,DRY规则等等)。我想通过在我的Model类中使用一些可重用的方法(例如 withPayload())将其隐藏在某种抽象的背后。在Laravel中有什么方法可以做到这一点?也许以某种方式与查询范围和采摘方法?
答案 0 :(得分:2)
我认为您目前使用makeVisible
的方式很好。将->makeVisible('payload');
隐藏在另一种方法后面将不会有任何收获。这将是一种非标准的处理方式,下一位开发人员将不得不去学习并记住新方法的作用。
$hidden
和makeVisible
使下一个开发人员清楚地知道该数据可能是敏感数据,并且不能对所有用户可见。如果您认为可以使数据可见而不是隐藏,那么可以考虑将字段添加到$visible
数组中,或者同时删除$visible
和$hidden
数组(如果您请勿将其用于其他任何字段),并在需要时使用makeHidden
方法隐藏数据。
答案 1 :(得分:0)
我建议您深入fractals (spatie/laravel-fractal是一个很好的包装器),并在其中放置了将模型表示为JSON的逻辑。
您可以在其中定义JSON输出的基本结构(即您一直拥有的字段),并在需要特定字段的任何地方使用 include 。
答案 2 :(得分:0)