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