php - Laravel - 获取所有记录而不仅仅是第一个并将它们放在一起?

标签 php mysql laravel laravel-5.3

我已经尝试向所有人提出这个问题,但没有人明白我为什么要这样做或为什么它不起作用,但这次我会尽力正确解释它。

我的网站上有一个简单的政府页面,其中显示了 3 个面板,其中包含高级政府、高级部长和初级部长。在每个面板中,它显示了分配给该政府级别的帐户列表。

这是我的 government.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')

这是我用于显示页面的 Controller :

<?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 的模式,我已将它们都发布在下面。

政府角色:

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');
    }
}

因此,我想要实现的不仅是在它找到的数据库中获取第一个政府角色记录的所有角色扮演实例,而是将匹配 government_type 的所有记录的所有角色扮演实例放在一起 higher_government、senior_ministers 或 junior_ministers。

最佳答案

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

// 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

关于php - Laravel - 获取所有记录而不仅仅是第一个并将它们放在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41519817/

相关文章:

PHP按位存储星期几

database - MySql - 计算每天事件的时间戳数据集(时间戳、事件)

Mysql ORDER BY (Column2+Column3) 如果 Column1 为空?

mysql - 如何优化双选查询

javascript - Laravel Mix 公共(public) block 和 vendor block

php - Laravel - 护照/SPA 401 未经授权

php - 绑定(bind)参数时SQLState错误

php - HTML解析如何去除mysql数据库中的标签、属性

php - 为什么 heder ('Location:index' )不工作但 window.location.href ='index.php' 工作?

postgresql - DEALLOCATE pdo_stmt 需要很长时间(几天),这正常吗?