tutorial laravel

Fitur Rahasia Laravel

Fitur Rahasia Laravel – Pada kesempatan ini kita akan membahas fitur rahasia pada framework laravel, saya mengatakan fitur rahasia karena hal-hal yang akan saya jabar-kan dibawah ini tidak bisa kita temukan di dokumentasi resminya (https://laravel.com/docs/7.x). Saya sendiri menemukan beberapa fitur ini kebanyakan berdasarkan referensi yang saya baca dari internet, ada cukup banyak kalau kita mau riset. Namun kali ini saya akan coba jabar-kan beberapa fitur rahasia laravel yang sering saya gunakan pada project yang sedang saya kembangkan.

BACA JUGA : https://soft-gain.com/2020/06/20/menyembunyikan-id-pada-url-tutorial-laravel-obfuscation/

1. Mendefinisikan attribute didalam method find()

Sebagian dari kita pasti tidak asing dengan method find() atau findOrFail(), namun tahukan anda kita dapat mendefinisikan attribute tertentu saat menggunakan method ini? Contohnya seperti dibawah ini :

$barangs = model::find($id, ['nama_barang', 'jumlah_barang']);

2. Menduplikat data

Untuk menduplikat data pada laravel, kita dapat menggunakan method replicate() seperti dibawah ini :

$barangs = model::find($id);
$newBarangs = $barangs->replicate(); // proses untuk duplikat data
$newBarangs->save();

3. Memeriksa attribute yang telah diubah

Anda dapat menggunakan method getChanges untuk memeriksa attribute mana saja yang diubah, contohnya seperti ini :

$barangs = model::where('id',$id)->first();
$barangs->nama_barang = $request->nama_barang;
$barangs->jumlah_barang = $request->jumlah_barang;
$barangs->keterangan = $request->keterangan;
$barangs->save();

dd( $barangs->getChanges() );
// contoh output method getChanges()
// array:2 [▼
//   "keterangan" => "keterangan - edit"
//   "updated_at" => "2020-06-30 05:34:48"
// ]

4. Memeriksa model atau attribute yang diubah

Jika hanya hendak memeriksa model atau attribute sudah diubah atau belum bisa menggunakan method isDirty(), contohnya seperti ini :

$barangs = model::where('id',$id)->first();
$barangs->isDirty(); // false
$barangs->nama_barang = $request->nama_barang;
$barangs->jumlah_barang = $request->jumlah_barang;
$barangs->keterangan = $request->keterangan;
$barangs->isDirty(); // true
$barangs->save();

// Atau bisa juga dengan specific attribute
$barangs->isDirty('nama_barang'); // true
$barangs->isDirty('jumlah_barang'); // false

5. Mendapatkan nilai attribute asli yang sudah diubah

Selain bisa mendapatkan dan memeriksa perubahan pada suatu attribute, kita juga bisa mendapatkan kembali nilai asli dari suatu attribute yang sudah kita ubah sebelumnya, contohnya seperti ini :

$barangs = model::where('id',$id)->first();
$barangs->nama_barang = $request->nama_barang;
$barangs->jumlah_barang = $request->jumlah_barang;
$barangs->keterangan = $request->keterangan;
dd( $barangs->getOriginal() );

// contoh output dari method getOriginal()
// array:4 [▼
//   "id" => 7
//   "nama_barang" => "Laptop"
//   "jumlah_barang" => 10
//   "keterangan" => "keterangan - edit"
// ]

6. Model relationship dengan where dan order by statement

Tahukah anda kita bisa menyisipkan beberapa where dan order by statement pada model relasi yang kita buat? Contoh nya seperti dibawah ini :

public function getUpdatedBy(){
     return $this->hasOne(User::class, 'id', 'updated_by')->where('role','admin')->orderBy('email');
}

7. Multiple id parameter pada find() method

Kembali lagi pada find() method, kali ini kita juga bisa mendefinisikan beberapa parameter id sekaligus, contohnya seperti ini :

$barangs = model::find([2,4,6]);

8. Order by data pada relationship

Untuk fitur yang satu ini, kita akan mencoba mengurutkan data berdasarkan model relationship, biasanya konsep ini kita perlukan untuk menampilkan data topik pada suatu blog atau forum berdasarkan post terakhir, contohnya seperti dibawah ini :

// di model tambahkan method latest()
return $this->hasOne(User::class, 'id', 'updated_by')->latest();

// di controller tambahkan method sortByDesc
$barangs = model::with('getUpdatedBy')->get()->sortByDesc('getUpdatedBy.created_at');

9. Multiple where condition

Jika biasanya kita mendefinisikan kondisi where satu persatu, sebetulnya kita bisa mendefinisikan kondisi tersebut sekaligus dalam satu where statement, contohnya seperti ini :

$query->where(['nama' => $nama, 'status' => $status]);

Demikianlah penjabaran fitur-fitur laravel yang saya rasa akan berguna bila kita ketahui, mungkin artikel ini akan terus diupdate point-point nya seiring dengan ditemukannya fitur-fitur menarik lainnya pada laravel, terima kasih.

Leave a Reply

Your email address will not be published. Required fields are marked *