【问题标题】:Hiding attributes per function隐藏每个函数的属性
【发布时间】:2013-10-27 19:00:12
【问题描述】:

我们可以使用:

protected $hidden = array('attribute');

隐藏我们不想发送到视图的属性。

我发现写作:

$this->table = 'table';

在一个特定的函数中导致另一个表被使用。

但是如果我们只需要在特定函数中隐藏一些属性,我们会怎么做呢?

有点像这样:

$this->hidden = array('attribute1', 'attribute2');

但这没有用。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    你应该真正了解如何使用models.

    在你的模型中,你可以设置几个属性,例如,模型应该使用什么表:

    protected $table = 'my_users';
    

    或者模型的哪些属性会被隐藏:

    protected $hidden = array('password');
    

    或者哪些属性是可填充的(列入白名单),从而防止批量分配漏洞:

    protected $fillable = array('first_name', 'last_name', 'email');
    

    或者哪些属性应该被列入黑名单:

    protected $guarded = array('id', 'password');
    

    因此,您不是按功能处理这些属性/属性,而是按类(模型)。

    如果您在模型中将某些属性设置为隐藏,则无论如何它们都将从 Array 或 JSON 转换中隐藏。

    【讨论】:

    • 我知道一切是如何运作的,但这样做会让我得到大约 20 个模型,这对我来说并不理想。
    • 拥有 20 个模型不会影响您的性能,这就是 Laravel 的用途。我不确定你想完成什么,但我很乐意提供帮助。能说详细一点吗?
    • 我有 3 个相互关联的表,一个称为“信息”,其中包含一些特定于每个用户的信息,例如演示等,另一个是 info_options,它的数字与 info_options_data 中的 id 对应。在每个模型中执行此操作将为我提供 3 个模型,用于非常简单的事情。
    • 你可以只用一两个模型来做到这一点。如果 info_options 和表示表有一些简单的琐碎数据,您可以在用户模型上创建自定义属性。 Laravel 称这些为accessors
    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2014-10-26
    • 2012-07-01
    • 1970-01-01
    • 2012-11-21
    • 2018-07-15
    相关资源
    最近更新 更多