我有一些关于Laravel中protected $attributes和mutators的问题。
我有一个用户积分排名。我想在User模型中添加另一个属性来表示排名位置。
在User模型中,我有以下公共函数:
public function getRankPositionAttribute(){
$userPoints= Ranking::where('user_id','=',$this->id)->first();
$userPosition = Ranking::where('points','>',$userPoints->points)->count()+1;
return $userPosition;
}
我也设置了:
protected $attributes = array('RankPosition'='');
但是它没有起作用(我在属性中看不到像RankPosition这样的值)。奇怪的事情是,当我添加(例如)这样的值时:
protected $attributes =array('test'=>'yes');
Laravel也无法看到测试...
但是当我添加了这个:
protected $appends = array('RankPosition');
在我的控制器中,我找到了所有用户并将响应转换为json。然后在json响应中,我看到像RankPosition这样的值,它具有正确的值... :(
我做错了什么?为什么"我的Laravel"跳过了受保护的$attributes?
请帮助我。
Model::$attributes
属性中看到你的 mutator。 - Skysplit