Laravel - 获取所有记录,而不仅仅是第一个?

时间:2017-01-04 08:26:38

标签: php laravel

今天我遇到了Laravel的问题。我想要做的就是获得每一个' stat' policy_type = higher_government的每条记录的价值。顺便说一句,我是不同的类型,但这只是其中之一。

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

如何获取所有类型的所有统计信息而不是仅调用 - > first()?

我尝试删除 - > first()但除了给我这个错误之外它没有做任何事情:

Undefined property: Illuminate\Database\Eloquent\Builder::$stats

统计数据是一种关系:

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

3 个答案:

答案 0 :(得分:1)

试试这个

\应用\ YourModelName :: SELECT( '字段') - 化合物其中( '状态') - > GET();

答案 1 :(得分:0)

如果您只需要此表格中的一列,则可以使用select功能指示您想要的列。

像这样:

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

集合$higherGovernment现在将包含GovernmentRole个对象,其中包含一个参数stats

如果您希望这只是一个stats属性的数组,您可以使用集合来pluck这个值。像这样:

<?php
    $higherGovernment = Cache::remember('government.higher_government', 1, function() {
        return GovernmentRole::where('government_type', 'higher_government')->select('stats')->get()->pluck('stats');
    });

<强>更新

现在我们知道统计数据是一种关系,我认为最好的解决方案是加载所有GovernmentRole个对象和eager load关系。然后,您可以显示每个GovernmentRole的统计信息。

你可以这样做:

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

    // Just an example on how to get the stats
    foreach ($g in $higherGovernment)
        echo $g->stats->count();

答案 2 :(得分:-1)

你能做的就是在关系中做一个选择权,我想,就像这样:

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

在这种情况下,这将取消关系,但您将获得统计数据。另一种方法是直接从这种关系中获取统计数据:

GovernmentRole::where('government_type', 'higher_government')->first()->stats->select('stats')->get();

或者如果这给你一个错误,请尝试:

GovernmentRole::where('government_type', 'higher_government')->first()->stats()->select('stats')->get();