如何在Symfony 4中隐藏模型/实体中的特定列

时间:2019-03-19 13:21:12

标签: php laravel symfony doctrine

我在Symfony 4 Doctrine orm中具有带有基本字段id, firstname, lastname and password的User实体。使用find()方法隐藏密码字段的最简单方法是什么?例如,在Laravel模型中,我们可以这样做

class User extends Model {

protected $hidden = ['password']
...

如果不进行select()编辑,我找不到合适的解决方案。 谢谢

2 个答案:

答案 0 :(得分:1)

我不认为可以,并且如果您通过select指定字段,则不会获得实体,而是获得数据数组。

我认为正确的方法(如果您的最终目标是过滤发送到视图的内容)将是检索整个实体,然后对其进行序列化(如果尚未完成)并排除您没有的属性想要使用序列化组。参见https://symfony.com/doc/current/components/serializer.html#attributes-groups

请注意,如果您要编写API,则可以使用现成的解决方案来处理这些情况(FOSRestBundle是其中一种:https://symfony.com/doc/master/bundles/FOSRestBundle/index.html

答案 1 :(得分:0)

由于其 EloquentCollections ...等,Laravel 仍然有一个更简单的方法来处理 Json 和序列化
但同样在 Symfony(4 及更高版本)中,您可以使用 @Ignore() 注释忽略字段。
更多详情:ignoring fields
希望对您有所帮助。