Laravel如何按学校ID计算特定数据?

时间:2018-04-03 02:18:23

标签: laravel-5 laravel-query-builder

我在下面有laravel查询

$school = DB::table('sekolah')->get();

$morning_session =  DB::table('sekolah')->join('pelajar', 'sekolah.sekolah_id', '=', 'pelajar.sekolah_id') ->where('pelajar.pelajar_sesi', 'like', 'Morning')->groupBy('pelajar.sekolah_id')->count();

$afternoon_session =  DB::table('sekolah')->join('pelajar', 'sekolah.sekolah_id', '=', 'pelajar.sekolah_id')->where('pelajar.pelajar_sesi', 'like', 'Afternoon')->groupBy('pelajar.sekolah_id')->count();

我的刀片看起来像这样

@foreach($school as $d) 
    <div class="col-md-6">
        <i class="fa fa-mortar-board" style="font-size:80px;display:block;text-align:center"></i>
         <h4>{{$d->sekolah_nama}}</h4>
         <!-- morning session -->
         <i class="fa fa-calendar" aria-hidden="true"></i> Morning: {{$morning_session}} people
         <!-- afternoon session -->
         <i class="fa fa-calendar" aria-hidden="true"></i>  Afternoon: {{$afternoon_session}}
        </div>
@endforeach

我想要计算上午和下午的foreach学校ID。但结果显示只有pelajar.sekolah_id = 1 school website。您可以在student table

上查看下表

1 个答案:

答案 0 :(得分:0)

根据我所看到的情况,您可以使用以下内容:

$morning_session =  DB::table('pelajar')
    ->select('sekolah_id', DB::raw('count(*) as total'))
    ->where('pelajar_sesi', 'like', 'Morning')
    ->groupBy('sekolah_id')
    ->pluck('total','sekolah_id')->all();

$afternoon_session =  DB::table('pelajar')
    ->select('sekolah_id', DB::raw('count(*) as total'))
    ->where('pelajar_sesi', 'like', 'Afternoon')
    ->groupBy('sekolah_id')
    ->pluck('total','sekolah_id')->all();

然后在你看来像:

Morning: {{!empty($morning_session[$d->sekolah_id]) ? $morning_session[$d->sekolah_id] : '0'}} people

我希望我理解你的问题,这会有所帮助。