Laravel 5.6:计算id_jadwal的数量

时间:2019-05-08 07:14:40

标签: php laravel

我有一个过滤查询如下。

function DaftarMatakuliahKontrak() {
    $tahun_akademik = \DB::table('tahun_akademik') - > where('status', 'y') - > first();

    $kelas = \DB::table('khs') - > where('kode_tahun_akademik', $tahun_akademik - > kode_tahun_akademik) - > groupBy('id_jadwal', 'kode_mk') - > select('id_jadwal', 'kode_mk') - > get(); //Get id_jadwal

    foreach($kelas as $row) {
        $hitung = \DB::table('khs') - > where('id_jadwal', $row - > id_jadwal) - > select('id_jadwal') - > count(); //Count id_jadwal


    }

    dd($hitung);

}

现在我希望查询具有以下输出

id_jadwal           quantity
-------------------------------
100                      6
-------------------------------
150                      3
-------------------------------

我的模特

class kelas extends Model
{
    protected $table="khs";

    protected $fillable=['kode_mk','id_jadwal','nidn'];
}

但是,仅显示1个数据量最大的数据

1 个答案:

答案 0 :(得分:1)

您将需要使用分组依据,它将所有结果按给定列分组。您还必须进行特定选择,这将聚合给定行上的数据,所有行都具有相同的id_jadwal,然后您就可以在其中进行计数,求和等操作。是否将所有ID映射到变量,利用whereIn来模拟执行foreach循环的方式。

$jadwals = array_map(function($row) { return $row->id; }, $kelas);

$hitung = \DB::table('khs')
    ->whereIn('id_jadwal', $jadwals)
    ->groupBy('id_jadwal')
    ->select('id_jadwal', DB::raw('COUNT(id_jadwal) as quantity'));

这应该会产生您建议的结果,如果您有任何疑问或对齐方式,请写出,由于使用外语命名,因此很难理解。

id_jadwal           quantity
-------------------------------
100                      6
-------------------------------
150                      3
-------------------------------