Tạo Trait Để Sinh Mã Đơn Hàng Tự Động Trong Laravel 11

Tạo Trait Để Sinh Mã Đơn Hàng Tự Động Trong Laravel 11

Bài viết này hướng dẫn cách tạo một Trait trong Laravel để tự động sinh mã đơn hàng. Trait này có thể được tái sử dụng trong nhiều model khác nhau, giúp bạn dễ dàng quản lý và duy trì mã đơn hàng trong ứng dụng của mình. Chúng ta sẽ đi qua các bước từ tạo file Trait, viết logic sinh mã, và cách áp dụng Trait vào các model cần thiết. Cuối cùng, bài viết sẽ cung cấp một số mẹo để tùy biến và nâng cao tính năng của Trait.

1 Tạo command để tạo Trait với lệnh

php artisan make:trait AutoCodeTrait

2 Sau đó code như sau 

<?php
namespace App\Traits;

use Illuminate\Support\Carbon;
use Illuminate\Support\Str;

trait AutoCodeTrait
{
    public function generateCustomUUID(int $length = 15, $kitu= 'T') {
        $characters = 'abcdefghijklmnopqrstuvwxyz123456789';
        $day = Carbon::now()->format('d');
        $month = Carbon::now()->format('m');
        $year = Carbon::now()->format('y');
        $hours = Carbon::now()->timezone('Asia/Ho_Chi_Minh')->format('H');
        $charactersLength = strlen($characters);
        $randomString = '';
        $newlength = ($length < 12) ? 1 : $length - 11;
        for ($i = 0; $i < $newlength; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return Str::upper($kitu.'-'.$year.$month.$day.$hours.'-'.$randomString);
    }
}

Giờ thì chúng ta có thể sử dụng chúng ở mọi nơi với cách dùng 

use CustomTrait;

Vậy là ta có thể sử dụng chúng với $this->generateCustomUUID(20)