我正在使用Laravel 4.2
。Laravel 4.1雄辩模型集动态追加
我有两种型号:User
和Video
,这两种型号都有one-to-many relationship
即User -> HasMany-> Video
。
最近,我要求显示用户列表以及每个用户上传的总视频的文件大小总和,并允许用户按照文件大小的总和升序或降序排列。
我已经取得了User
模型以下变化:
class User extends Eloquent {
protected $hidden = array('videosSum');
protected $appends = array('videos_size');
public function videosSum() {
return $this->hasOne('Video')
->selectRaw('sum(file_size) as sum, user_id')
->groupBy('user_id');
}
public function getVideosSizeAttribute()
{
// if relation is not loaded already, let's do it first
if (! array_key_exists('videos_size', $this->relations)){
$this->load('videosSum');
}
$related = $this->getRelation('videosSum');
return $this->attributes['videos_size'] = isset($related->sum) ? (int) $related->sum : 0;
}
}
而且使用这样的:
User::where('id', '!=', Auth::user()->id);
我得到了想要的结果。
但问题是,我不希望videos_size
属性无处不在,User
模型被调用。 我想动态设置它。
我试图User::$appends = ['videos_size']
但它给保护财产不能设置如雷贯耳类错误的。
我也试过在User
模型中设置$appends
的方法,但如果调用它也不起作用。
任何人都可以帮助我如何动态启用append属性?
任何专家可用于laravel? – Dev
您是否尝试设置公共附件来更改它? – mimo
我不确定它是否可行,让我检查一下。 – Dev