Ada kabar gembira untuk para developer Laravel! Tim Laravel baru saja merilis versi 11.10 dengan berbagai fitur baru yang menarik. Penasaran apa saja fiturnya? Mari kita simak bersama!
1. Update atau Insert Data dengan Callback di updateOrInsert()
Mark Eriksson berkontribusi dengan kemampuan untuk mengirimkan callback sebagai argumen kedua ke method query builder updateOrInsert()
. Di dalam callback tersebut, variabel boolean $exists
akan diteruskan, sehingga Anda dapat menulis logika untuk memperbarui kolom tertentu berdasarkan ada tidaknya record di database.
Contoh penggunaan:
DB::table('users')->updateOrInsert(
['user_id' => $user_id],
function ($exists) use ($data) {
if ($exists) {
return [
'name' => $data['name'],
'email' => $data['email'],
];
}
return [
'name' => $data['name'],
'email' => $data['email'],
'optional_column' => $data['foobar'],
];
}
);
Dengan fitur ini, Anda dapat dengan mudah memperbarui data yang ada atau memasukkan data baru ke database hanya dengan satu method.
Untuk detail implementasi lengkapnya, Anda bisa lihat Pull Request #51566.
2. Mendukung Model Soft-Deleted dengan Explicit Route Model Binding
Graham Bradley menambahkan dukungan untuk model soft-deleted saat menggunakan explicit route model binding.
Apa itu soft-deleted? Soft-deleted adalah teknik untuk menandai data sebagai “dihapus” tanpa benar-benar menghapusnya dari database. Ini berguna untuk menyimpan riwayat data atau memungkinkan pemulihan data yang tidak sengaja terhapus.
Apa itu explicit route model binding? Explicit route model binding adalah fitur di Laravel yang memungkinkan Anda secara otomatis menyuntikkan model ke dalam controller Anda berdasarkan parameter route.
Dengan fitur baru ini, Anda tidak perlu lagi menyesuaikan logika resolusi model saat berhadapan dengan model soft-deleted.
Sebelumnya, Anda harus menggunakan custom binding untuk menangani model soft-deleted. Sekarang, cukup gunakan method withTrashed()
seperti pada implicit binding.
Perbandingan sebelum dan sesudah fitur ini:
Sebelum:
Route::get('/users/{user}', ...);
Route::bind('user', function (string $value) {
return User::where('id', $value)->withTrashed()->firstOrFail();
});
Setelah:
Route::get('/users/{user}', ...)->withTrashed();
Route::model('user', User::class);
Untuk detail implementasi lengkapnya, Anda bisa lihat Pull Request #51651.
Kesimpulan
Laravel 11.10 menawarkan beberapa peningkatan yang bermanfaat untuk developer. Kemampuan untuk menggunakan callback di updateOrInsert()
memberikan fleksibilitas lebih dalam memperbarui atau memasukkan data. Dukungan untuk model soft-deleted dengan explicit route model binding membuat pengembangan web dengan Laravel semakin efisien.
Masih penasaran dengan fitur-fitur baru lainnya? Laravel terus berkembang dengan pesat, jadi pastikan Anda selalu mengikuti update terbaru untuk memaksimalkan potensi framework ini dalam project Anda!