我目前正在开发一个我正在编写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');
}
}
在Laravel文档中,对于Eloquent > Converting to Array or Json部分,它清楚地说明了
注意:隐藏关系时,请使用关系的方法名称, 不是动态访问者名称。
这究竟是什么意思?在上面的例子中,方法名称和动态访问者名称都是相同的,我不能为我的生活,想到这种情况不会是这种情况。
答案 0 :(得分:6)
protected $hidden = array(
'id', 'user_id', 'user'
^^^ relationship's method name which is "user"
);
如果要隐藏关系,则必须在隐藏属性下包含method name
。从隐藏的属性中,我可以看到,您完全隐藏了来自Array和JSON转换的user
关系。但是,如果您的users_tokens
表中有“用户”列,我不知道Laravel的行为。
public function user() {
return $this->belongsTo('User');
}
答案 1 :(得分:1)
我遇到了同样的问题,并决定用PR向Laravel文档澄清这一点。 似乎没有区别,而且说明不正确。