【发布时间】:2015-12-08 18:14:59
【问题描述】:
我正在使用Laravel 4.2。
我有两个模型:User 和 Video,这两个模型都有one-to-many relationship,即User -> HasMany-> Video。
最近,我需要显示用户列表以及每个用户上传的总视频的文件大小总和,并允许用户按文件大小总和升序或降序排列。
我对@987654326@ 模型进行了以下更改:
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'],但它给出了protected property cannot be set outsize of class错误。
我还尝试在User 模型中创建一个方法,如果调用该方法设置$appends,但它也不起作用。
谁能帮助我如何动态启用 appends 属性?
【问题讨论】:
-
有可以使用 laravel 的专家吗?
-
您是否尝试过将 appends 设置为 public 以更改它?
-
我不确定这是否可能,让我检查一下。
标签: laravel