Laravel雄辩的ORM获得关系模型列和顺序的总和

时间:2015-09-25 08:51:02

标签: laravel

我正在使用带有MySQL后端的Larave 4.2。

我有两张表有很多关系如下:

users  : id(PK), name
videos : id(PK), user_id(FK), title, file_size

我希望为每个用户获取视频大小的总和,因此我创建了如下关系:

class User extends Eloquent{

    protected $table = 'users';

    public function videosSize() {
      return $this->hasOne('Video')
        ->selectRaw('user_id, sum(file_size) as videosSize')
        ->groupBy('user_id');
    }

    public function getVideosSizeAttribute() {
      // if relation is not loaded already, let's do it first
      if ( ! array_key_exists('videosSize', $this->relations)) 
        $this->load('videosSize');

      $related = $this->getRelation('videosSize')->first();

      // then return the count directly
      return ($related) ? (int) $related->videosSize : 0;
    }
}

我正在使用它:

$user = User::with('videosSize')->get(); 

它返回如下数组:

Array
(
    [0] => Array
        (
            [id] => 18
            [name] => abc
            [videos_size] => Array
                (
                    [user_id] => 18
                    [videosSize] => 8731801
                )
        )
    [1] => Array
        (
            [id] => 19
            [name] => abc
            [videos_size] => Array
                (
                    [user_id] => 19
                    [videosSize] => 7931881
                )
        )
    .. so on
)

但是,我想得到它:

Array
(
    [0] => Array
        (
            [id] => 18
            [name] => abc
            [videos_size] => 8731801

        )
    [1] => Array
        (
            [id] => 19
            [name] => abc
            [videos_size] => 7931881
        )
    .. so on
)

后来我想通过videos_size 排序

希望对原始查询使用join 语句,因为我在那里with语句更多User模型,我不能改变它们,因为有很多东西取决于它返回的嵌套数组。

我该怎么办?

0 个答案:

没有答案