Cara Mengatasi ‘Call to a member function getQuery() on null’ Pada Laravel

Saat meload data & relasi menggunakan Eloquent, terjadi error ‘Call to a member function getQuery() on null’. Hal ini disebabkan karena pada fungsi relasi di model eloquent tidak ada return hasil. Berikut contohnya:

public function kunjungan()
{
    $this->belongsTo(Kunjungan::class, "kunjungan_id");
}

Seharusnya fungsi relasi tersebut seperti ini:

public function kunjungan()
{
    return $this->belongsTo(Kunjungan::class, "kunjungan_id");
}

Semoga Bermanfaat, Tetap Sehat, Tetap Semangat, agar dapat Tetap dalam Perdjoeangan!!

Cara Return Response 422 (Unprocessable Entity / Content) di Laravel

Berikut contoh custom validasi yang return response 422, untuk mengecek apakah nilai pada array nominal_bayar kosong (null / empty) semua atau tidak.

$nominal_bayar = $request->nominal_bayar;
if (!array_filter($nominal_bayar)) {
    return response()->json(["errors" => ["nominal_bayar" => "Silakan input nominal pembayaran."]], 422);
}

Semoga bermanfaat. Tetap Sehat, Tetap Semangat, Tetap dalam Perdjoeangan!!

Repositori Git Project Laravel : Include Folder Vendor Apa Tidak?

Ada 2 kondisi :

1. Bisa Akses SSH / Terminal

Untuk kondisi ini, lebih baik folder vendor di-ignore saja. Karena kita bisa run composer install / update.

2. Hanya Punya Akses Cpanel / FTP

Kalau ini, menurutku lebih baik di-include, agar lebih mudah me-track dependency mana saja yang perlu di-upload. Lebih amannya, versi php yang digunakan di server local disamakan dengan versi php di server web, agar waktu diupload tidak terjadi masalah karena beda versi php.

Semoga bermanfaat. Tetap Sehat, Tetap Semangat, Tetap dalam Perdjoeangan!!

Cara Setting Redis untuk menyimpan Laravel Session

1. Install package predis/predis

composer require predis/predis

2. Edit config berikut pada file .env

CACHE_DRIVER=redis
CACHE_PREFIX=cache    # akan digabung dengan REDIS_PREFIX
SESSION_DRIVER=redis
SESSION_LIFETIME=120

REDIS_CLIENT=predis   # default pakai phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_PREFIX=simrs_   # akan digabung dengan CACHE_PREFIX

3. Run php artisan optimize

php artisan optimize

4. Hasil dilihat pakai RedisInsight

RedisInsight untuk menampilkan data session Laravel yang disimpan di server Redis

Semoga Bermanfaat. Tetap Sehat, Tetap Semangat, Tetap dalam Perdjoeangan!!

Cara Menggunakan Laravel Pagination dengan Distinct

Masalah: ketika menggunakan distinct pada fungsi paginate, ternyata hasil querynya sudah benar hanya tampil 2 data (fungsi distinct berhasil), namun total data/count-nya masih 12 (tanpa distinct).

$data = InputTindakan::join("tindakan AS t", "input_tindakan.tindakan_id", "t.id")
        ->whereRaw("rawat_jalan_id=?", [$kunjungan_id])
        ->selectRaw("tindakan_id AS id,t.nama as text")
        ->orderByRaw("t.nama")
        ->distinct()
        ->paginate(request('per_page', 10));

Solusi: ganti distinct() dengan groupBy()

$data = InputTindakan::join("tindakan AS t", "input_tindakan.tindakan_id", "t.id")
        ->whereRaw("rawat_jalan_id=?", [$kunjungan_id])
        ->selectRaw("tindakan_id AS id,t.nama as text")
        ->orderByRaw("t.nama")
        ->groupBy("tindakan_id")
        ->paginate(request('per_page', 10));

Semoga bermanfaat. Tetap Sehat, Tetap Semangat, Tetap dalam Perdjoeangan!!