Laravel - 将所有记录放在一起?

时间:2017-01-04 22:16:13

标签: php mysql laravel

我希望从government_type ='higher_government'的每条记录中获取每个'stat'值,但目前我的代码只获取它找到的第一个政府角色的统计数据实例,我如何整理所有统计数据在某种阵列?

$higherGovernment = Cache::remember('government.higher_government', 1, function() {
    return GovernmentRole::where('government_type', 'higher_government')->first()->stats;
});

统计关系:

public function government_role()
    {
        return $this->belongsTo('App\Database\Website\Roleplay\GovernmentRole', 'government_id');
    }

政府关系:1

    public function stats(){
       return $this->hasMany('App\Database\Website\User\Roleplay', 'government_id');
   }

2 个答案:

答案 0 :(得分:1)

使用pluck()->toArray()

GovernmentRole::where('government_type', 'higher_government')->pluck('stats')->toArray();

此代码将返回stats属性数组。

答案 1 :(得分:0)

您应该能够使用Eloquent's Collection中的pluck()方法。 https://laravel.com/docs/5.3/collections#method-pluck

将您的查询更改为:

GovernmentRole::where('government_type', 'higher_government')
    ->get()
    ->pluck('stats', 'government_id');

这将为您提供包含government_id =>的集合stats

如果您想要一个数组而不是一个集合,只需添加->toArray()

即可