如何正确隐藏模型关系以返回toArray()或toJson()?

oll*_*ead 2 php laravel

我正在开发一个我正在编写API的项目,并且有很多模型,我试图隐藏他们的父关系,就像这样

<?php namespace Viper\Model;

class User_Token extends Eloquent {

    protected $table = 'users_tokens';

    protected $fillable = array(
        'user_id', 'token'
    );

    protected $hidden = array(
        'id', 'user_id', 'user'
    );

    public function user() {
        return $this->belongsTo('User');
    }

}
Run Code Online (Sandbox Code Playgroud)

在Laravel文档中,对于Eloquent > Converting to Array或Json部分,它清楚地说

注意:隐藏关系时,请使用关系的方法名称,而不是动态访问者名称.

这到底是什么意思?在上面的例子中,方法名称和动态访问者名称都是相同的,我不能为我的生活,想到这种情况不会是这种情况.

Ana*_*nam 7

protected $hidden = array(
        'id', 'user_id', 'user'
                           ^^^ relationship's method name which is "user"
);
Run Code Online (Sandbox Code Playgroud)

如果要隐藏关系,则必须包含method name隐藏属性.从我的隐藏属性,我可以看到,你完全隐藏了user从Array和JSON转换的关系.但是,如果您的表中有"用户"列users_tokens,我不知道Laravel的行为.

public function user() {
    return $this->belongsTo('User');
}
Run Code Online (Sandbox Code Playgroud)