Dalam artikel ini kita akan membahas apa-apa saja yang terbaru dalam rilis kali ini. Oia, semua perbaruan ini dikontribusi oleh tim inti dari laravel yaitu Tim MacDonald.
Monitoring Query
Dengan adanya metode baru ini, kita bisa dapat dimudahkan melakukan sesuatu jika query yang kita load telah melebihi waktu yang kita tentukan. Jadi Anda bisa langsung memasukkan fungsi itu didalam file app/Providers/AppServiceProvider.php seperti berikut:
namespace App\Providers;
use Illuminate\Database\Connection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
...
public function boot()
{
DB::whenQueryingForLongerThan(500, function (Connection $connection) {
// Beritahu developer tentang hal ini
});
}
}
Nested Eager Loading
Dulunya, sebelum adanya fitur ini, kita akan mengulang-ulang dari satu relasi ke tabel relasi lain.
Bayangkan, disini kita akan menampilkan tabel documents yang isinya pasti ada authornya, tetapi author itu juga punya dua relasi ke tabel lain yang mesti kita tampilkan juga.
Maka sebelumnya kita akan menggunakan seperti ini:
Document::query()
->with(['user.articles', 'user.address'])
->get();
Nah, dengan adanya fitur ini, kita bisa nest dia dengan cara:
Document::query()
->with([ 'user' => ['articles', 'address']])
->get();
Menggunakan Rule Objects
Dalam fitur ini, kita jauh lebih mudah untuk mendefinisikan custom validasi. Nantinya, setelah kita generasi file nya dari command line, maka dia akan otomatis membuat file tersebut didalam folder app/Rules:
php artisan make:rule Lowercase --invokable
Setelah itu, maka Anda akan melihat file tersebut hanya dengan satu metode saja yaitu __invoke seperti:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\InvokableRule;
class Lowercase implements InvokableRule
{
/**
* Run the validation rule.
*
* @param string $attribute
* @param mixed $value
* @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail
* @return void
*/
public function __invoke($attribute, $value, $fail)
{
if (strtolower($value) !== $value) {
$fail('The :attribute must be lowercase.');
}
}
}
Semoga informasi terbaru ini berguna ya teman-teman.
Irsyad A. Panjaitan
Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.
Artikel yang Terkait
- Belajar Cache Flexible di Laravel
Irsyad A. Panjaitan
- Membuat Fitur Multi Bahasa di Laravel Inertia React
Irsyad A. Panjaitan
- Laravel Script: composer run dev
Irsyad A. Panjaitan
- Apa yang Baru di Inertia.js 2.0
Irsyad A. Panjaitan
- Membuat Custom Rule Validator untuk Nomor Telepon Indonesia dengan Laravel
Abd. Asis
- Like System dengan Laravel Polymorphic
Irsyad A. Panjaitan
- Laravel Dengan Multi Koneksi Database: Panduan Langkah demi Langkah
Abd. Asis