【问题标题】:Append custom attribute optionally/manually?可选/手动附加自定义属性?
【发布时间】:2017-03-19 06:01:20
【问题描述】:

在文档中遵循这一点:

https://laravel.com/docs/5.3/eloquent-serialization#appending-values-to-json

class User extends Model
{
    protected $appends = ['is_admin'];

    public function getIsAdminAttribute()
    {
        return $this->attributes['admin'] == 'yes';
    }
}

是否可以在查询中手动附加我的自定义属性?

在某些情况下,我不需要在我的 JSON 中包含此信息,我宁愿能够在查询中手动附加自定义属性,例如:

$users = User::append('is_admin')
    ->get();

这显然行不通,但我想知道是否有办法做到这一点。

【问题讨论】:

    标签: laravel laravel-5 laravel-5.3


    【解决方案1】:

    这应该适用于makeVisible 方法,只要定义了访问器或值在表中。

    $users = User::all()->makeVisible('is_admin')->toArray();

    有关该方法的更多信息可以在链接段落正上方的文档中找到。

    【讨论】:

    • 所以,换句话说,我必须将is_admin设置为默认隐藏,然后当我想将它包含在JSON中时调用makeVisible()
    • @user7733152 是的,但还有另一种选择。您可以在 $visible 数组中包含 is_admin,以防您想在该模型的每个响应中包含它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2011-11-23
    相关资源
    最近更新 更多