Rabu, 28 September 2022

Apa yang Baru di Laravel 9.31.0

Pada pembaruan kali ini, banyak sekali kontribusi dari Tim MacDonald. Yang mana semua itu juga yang kita harapkan bersama. Dalam artikel ini, saya akan memberi tahu apa-apa saja yang terbaru dalam versi 9.31 ini.

Laravel
Released

Pada pembaruan kali ini, banyak sekali kontribusi dari Tim MacDonald. Yang mana semua itu juga yang kita harapkan bersama. Dalam artikel ini, saya akan memberi tahu apa-apa saja yang terbaru dalam versi 9.31 ini.

Vite class Macroable

Pada tanggal 18 lalu, Tim MacDonald telah membuat pull request ke laravel framework untuk menambahkan yang namanya Vite class Macroable. Guna dari PR ini adalah agar kita dapat dengan mudah membuat alias pada konfigurasi javascript kita.

Mari kita perhatikan contoh berikut ini. Pada vite.config.js nya kita bisa alias kan image sebagai contoh case ini.

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
 
export default defineConfig({
    plugins: [
        laravel(/* ... */),
    ],
    resolve: {
        alias: {
            'image': '/resources/images',
            'page': '/resources/js/Pages',
        },
    },
});

Kemudian, ketika kita ingin menggunakan sudah bisa dengan cara:

import Profile from '@image/profile.png'

Anda sudah mengetahuinya dengan javascript, sekarang kita akan bahas pada laravel nya. Pada AppServiceProvider kita bisa letak itu pada metode boot seperti berikut ini.

use Illuminate\Support\Vite;
use Illuminate\Support\ServiceProvider;
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(): void
    {
        Vite::macro('image', fn ($asset) => $this->asset("resources/images/{$asset}"));
    }
}

Kemudian, untuk menggunakannya bisa mudah dengan memanggil Vite::localeAsset seperti berikut:

<img src="{{ Vite::image('profile.png') }}" alt="..." />

Str wrap static method

Steve Bauman menambahkan metode untuk wrap seperti:

Str::wrap('-bar-', 'foo', 'baz'); // 'foo-bar-baz'

str('-bar-')->wrap('foo', 'baz'); // 'foo-bar-baz'

Model getAppends() method

Arturo Rodríguez telah berkontribusi menambahkan metode untuk mendapatkan accessors mana yang telah ditambahkan pada model yang sedang digunakan.

$model->getAppends();

Request lifecycle duration handler

Tim MacDonald telah berkontribusi menambahkan fungsi whenRequestLifecycleIsLongerThan yang ketika request lebih lama dari batas waktu yang ditentukan.

use Carbon\CarbonInterval as Interval;
use Illuminate\Contracts\Http\Kernel;

public function boot()
{
    if ($this->app->runningInConsole()) {
        return;
    }

    $kernel = $this->app[Kernel::class];

    $kernel->whenRequestLifecycleIsLongerThan(
        Interval::seconds(1),
        fn ($startedAt, $request, $response) => /* ... */
    );
}

Model "without timestamps" feature

Masih dengan Tim, dia menambahkan static method yaitu withoutTimestamps() yang berguna untuk memperbarui data tanpa memperbarui update_at nya. Biasanya yang kita lakukan adalah menggunakan $this->timestamps = false. Namum, sekarang bisa dengan menggunakan fungsi yang baru saja di tambahkannya.

$user = User::latest()->first();

User::withoutTimestamps(
    fn () => $user->update(['reserved_at' => now()])
);

Dengan begitu, maka updated_at tidak akan berubah sama sekali. Itu saja dul untuk artikel ini, semoga bermanfaat ya. Saya Irsyad, see you next time.

Berikut ini adalah artikel yang bersangkutan mengenai update Laravel.