Laravel - 获取所有记录不仅仅是第一个并放在一起?

时间:2017-01-07 09:18:41

标签: php mysql laravel laravel-5.3

我曾尝试向所有人提出这个问题,但是没有人能够理解为什么我要这样做或为什么它不起作用但我会尽力在这次正确解释它。

我的网站上有一个简单的政府页面,其中包括3个与高级政府,高级部长和初级部长共同参与的小组讨论。在每个面板中,它显示了分配给该政府级别的帐户列表。

这是我的政府.blade.php:

@include('frontend.header')
        <div class="col-md-12" style="padding-bottom:24px;">
            <ul class="nav navtab nav-tabs" id="myTab" style="border-bottom:none;border-radius:1px;">
                <li style="padding-right:13px;" class="active"><a style="" data-target="#higher_government_team" data-toggle="tab"><i class="fa fa-diamond" aria-hidden="true"></i> &nbsp;The Monarch/PM</a></li>
                <li style="padding-right:13px;"><a style="" data-target="#senior_government_team" data-toggle="tab"><i class="fa fa-university"></i> &nbsp;Seniors</a></li>
                <li style="padding-right:13px;"><a style="" data-target="#junior_government_team" data-toggle="tab"><i class="fa fa-university"></i> &nbsp;Juniors</a></li>
            </ul>
        </div>
        <div class="col-md-8">
            <div class="tab-content">
                <div class="tab-pane active" id="higher_government_team">
                    <div class="panel panel-info">
                        <div class="panel panel-body">
                            higher gov here
                        </div>
                    </div>
                </div>
                <div class="tab-pane" id="senior_government_team">
                    <div class="panel panel-info">
                        <div class="panel panel-body">
                            senior gov here
                        </div>
                    </div>
                </div>
                <div class="tab-pane" id="junior_government_team">
                    <div class="panel panel-info">
                        <div class="panel panel-body">
                            @foreach ($juniorGovernment as $governmentMember)
                                {{ $governmentMember->user_id }}<br>
                            @endforeach
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-md-4">

        </div>
    </div>
@include('frontend.footer')

这是我的控制器,用于显示页面:

<?php

namespace App\Http\Controllers\Frontend\User;

use Auth;
use Cache;
use Illuminate\Http\Request;
use App\Database\Website\User\Roleplay;
use App\Database\Website\Roleplay\GovernmentRole;
use App\Database\Website\Roleplay\Life\LifeEvents;

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

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

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


        return view('frontend.community.government', compact('juniorGovernment', 'seniorGovernment', 'higherGovernment', 'royalty'));
    }
}

现在你可以看到,我只选择了government_type匹配的第一条记录。但问题是我在政府类型中有多个政府角色,我希望得到所有政府类型的记录的所有帐户统计数据。我看了别人的建议,但没有一个是有效的,要么是犯了错误,要么就是不做我想做的事。

现在,我有每个Roleplay和GovernmentRoles的模态,我已经在下面发布了它们。

GovernmentRole:     

namespace App\Database\Website\Roleplay;

use Eloquent;

class GovernmentRole extends Eloquent
{
    protected $primaryKey   = 'id';
    protected $table        = 'srp_government_roles';
    public $timestamps      = false;
    protected $fillable     = [];

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

角色扮演:     

use Eloquent;

class Roleplay extends Eloquent
{
    protected $primaryKey   = 'id';
    protected $table        = 'srp_user_statistics';
    public $timestamps      = false;
    protected $fillable     = [];

    public function user()
    {
        return $this->belongsTo('App\Database\Website\User\Player', 'user_id', 'id');
    }

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

所以我想要实现的不仅仅是在它找到的数据库中获取FIRST政府角色记录的所有角色扮演实例,而是将所有与政府类型匹配的所有角色扮演实例放在一起,分别为higher_government,senior_ministers或junior_ministers。 / p>

1 个答案:

答案 0 :(得分:1)

如果我明白你在问什么,你能不能做一些像在刀片上获取循环中的统计数据一样的东西?例如(我删除了缓存,它增加了问题/答案的复杂性而没有任何好处):

// controller
$higherGovernment = GovernmentRole::where('government_type', 'higher_government')->get();

// blade
@foreach($higherGovernment as $g)
    {{ $g->id }}
    {{ $g->name }}
    @foreach($g->stats as $stat)
      {{ $stat->id }}
      {{ $stat->something }}
    @endforeach
@endforeach