Laravel 5.6: Подсчитайте количество id_jadwal - PullRequest
0 голосов
/ 08 мая 2019

У меня запрос на фильтрацию выглядит следующим образом.

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 Ответ

1 голос
/ 08 мая 2019

Вам нужно будет использовать group by, он группирует все результаты по заданному столбцу. Вам также нужно будет сделать конкретный выбор, это агрегирует данные по заданным строкам со всеми строками с одинаковым id_jadwal, где вы затем можете считать, суммировать и т. Д. Сопоставили все идентификаторы с переменной, чтобы использовать 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
-------------------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...