laravel eloquent collection | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel eloquent collection

Friday, November 22, 2019

laravel eloquent collection

Laravel Eloquent Collection

Catatan belajar laravel, supaya mudah diingat :)
Update 24Feb20
Bagaimana caranya untuk mendapatkan data suatu eloquent berdasarkan eloqunet yang lain ?
Misalnya ada eloquent Pembayaran dan Mahasiswa, Pembayaran mempunyai foreign key(mahasiswa_id) terhadap Mahasiswa dengan referensi (id).
pada class Pembayaran kita tambahkan belongsTo kepada eloquent Mahasiswa, seperti ini :

public function mahasiswa() {
    return $this->belongsTo('App\Mahasiswa');
}
maka koding untuk mendapatkan data pembayaran berdasarkan kriteria kolom yang ada pada mahasiswa :
$data = Pembayaran::whereHas("mahasiswa", function( $q ) use ($namaMaha) {
               $q->where('nama_maha' , 'like' , '%' . $namaMaha . '%' );
            })->paginate(20);

Method find berdasarkan Primary Key


public function search(Request $request)

{

        $data = Config::find(1);

        return response()->json($data);

}

akan menghasilkan :
{"id":1,"kode":"TAHUN_PMB","nilai":"2020","created_at":"2019-11-19 16:03:24","updated_at":"2019-11-19 16:03:24","created_by":null,"updated_by":null}

data yang dihasilkan adalah berupa object eloquent.

Method find berdasarkan array dari Primary Key


public function search(Request $request)
{
        $data = Config::find([1,2]);
        return response()->json($data);
}

akan menghasilkan:
[{"id":1,"kode":"TAHUN_PMB","nilai":"2020","created_at":"2019-11-19 16:03:24","updated_at":"2019-11-19 16:03:24","created_by":null,"updated_by":null}]

data yang dihasilkan dari method find dengan parameter array dari primary key akan mengembalikan hasil collection dari eloquent.

Method All

public function search(Request $request)
{
$data = Config::all();
return response()->json($data);
}
akan menghasilkan :
[{"id":1,"kode":"TAHUN_PMB","nilai":"2020","created_at":"2019-11-19 16:03:24","updated_at":"2019-11-19 16:03:24","created_by":null,"updated_by":null}]
method all akan mengembalikan nilai collection dari eloquent.

Method Where dengan get() dan tanpa get()


public function search(Request $request)
{
        $data = Config::where('kode','TAHUN_PMB');
        return response()->json($data);
}

akan menghasilkan:
{}


eloquent nya null, tetapi jika kita tambahkan method ->get() , seperti function ini :
public function search(Request $request)
{
        $data = Config::where('kode','TAHUN_PMB')->get();
return response()->json($data);
}

akan menghasilkan:
[{"id":1,"kode":"TAHUN_PMB","nilai":"2020","created_at":"2019-11-19 16:03:24","updated_at":"2019-11-19 16:03:24","created_by":null,"updated_by":null}]

method where dengan get akan mengembalikan nilai collection dari eloquent.

Method Where dengan parameter Primary Key


public function search(Request $request)
{
        $data = Config::where('id',1)->get();
        return response()->json($data);
}


akan menghasilkan:
[{"id":1,"kode":"TAHUN_PMB","nilai":"2020","created_at":"2019-11-19 16:03:24","updated_at":"2019-11-19 16:03:24","created_by":null,"updated_by":null}]

data yang dihasilkan adalah berupa collection, tetapi cuma 1 row saja.

Method Where dan First


public function search(Request $request)
{
        $data = Config::where('kode','TAHUN_PMB')->first();
        return response()->json($data);
}
akan menghasilkan:
{"id":1,"kode":"TAHUN_PMB","nilai":"2020","created_at":"2019-11-19 16:03:24","updated_at":"2019-11-19 16:03:24","created_by":null,"updated_by":null}

method first akan menghasilkan object eloquent.

Laravel Membersihkan Cache Config View


untuk membersihkan cache,fongi dan view, gunakan 3 perintah di bawah ini :

php artisan cache:clear php artisan config:clear php artisan view:clear


Run Laravel supaya bisa diakses LAN :
php artisan serve --host 192.168.0.8 --port 8080

flush cache
php artisan cache:forget spatie.permission.cache


Laravel : membuat Sub query dengan Dua Group By

berikuti ini adalah contoh coding laravel untuk menampilkan data menggunakan dua buah group by, pertama group by diletakkan pada sub query, yang kedua group by diletakkan pada query utama :


$sub = DB::table('kartu_rencana_studi as krs') ->join('sebaran_details as d' , 'd.id' , '=' ,'krs.sebaran_detail_id') ->join('sebarans as s' , 's.id' , '=' ,'d.sebaran_id') ->join('prodis as p' , 'p.id' , '=' , 'krs.prodi_id') ->select('p.prodi', 'krs.prodi_id' , 'krs.sebaran_detail_id') ->where('s.ta_id', $tahun_akademik_id) ->where('krs.nilai','=', 'T') ->groupBy('p.prodi' , 'krs.prodi_id', 'krs.sebaran_detail_id'); $data = DB::table( DB::raw("({$sub->toSql()}) as sub") ) ->mergeBindings($sub) ->selectRaw('prodi , count(prodi_id) as jumlah') ->groupBy('prodi') ->orderBy('prodi') ->get();
Bersambung

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux