0
Assalamwalaikum man teman,
Kali ini saya Akan membagikan sedikit trik bagaimana membuat penomoran otomatis pada laravel 5.8,
Sebenarnya cara ini saya adopsi dari tulisan bang fikri di http://mfikri.com . Tapi bedanya saya  terapkan pada laravel, Oya dalam case ini Laravel yang  saya pakai versi 5.8 dan database Postgress jika kalian menggunakan Mysql jangan khawatir, karena syntax query builder tidak jauh berbeda.
oke langsung aja, saya anggap temen-temen sudah instal pacakage Laravel nya, jadi tidak harus dijeslakan hehe.

pertama kita buat table nya terlebih dahulu.


-- Table: public.project

-- DROP TABLE public.project;

CREATE TABLE public.project
(
    id bigint NOT NULL DEFAULT nextval('project_id_seq'::regclass) ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
    kode character varying(50) COLLATE pg_catalog."default",
    jenis_id integer NOT NULL,
    layanan_id integer NOT NULL,
    user_id integer,
    total_penghadap integer,
    status character varying(15) COLLATE pg_catalog."default",
    create_at timestamp without time zone,
    add_by character varying(50) COLLATE pg_catalog."default",
    update_at time without time zone,
    update_by character varying(50) COLLATE pg_catalog."default",
    CONSTRAINT project_pkey PRIMARY KEY (id)
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.project
    OWNER to postgres;


lalu buat controler baru dengan perintah


php artisan make:controller KodeController



Kurang lebih isinya seperti ini :


namespace App\Http\Controllers;

use DB;

use Carbon\Carbon;
class KodeController extends Controller
{
  //
  public function index()
  {
    
    echo $this->kode();

  }
  protected function kode()
  {
    $kd="";
   $query = DB::table('project')
   ->select(DB::raw('MAX(RIGHT(kode,4)) as kd_max'))
    ->whereDate('create_at',Carbon::today());
   if ($query->count()>0) {
    foreach ($query->get() as $key ) {
    $tmp = ((int)$key->kd_max)+1;
    $kd = sprintf("%04s", $tmp);
    }
   }else {
$kd = "0001";
   }

    return  "PR-".date('dmy').$kd;
  }
   
}


setelah itu kita buat Route untuk mengarahkan ke Controller yang kita buat tadi.


Route::get('tes', 'KodeController@index');


lalu bisa langsung panggil localhost/nama_aplikasi/kode Maka harusnya outputnya seperti ini
PR-2204190002  

Seperti yang di jelaskan di tulisan situs sumber bahwa kode unik tersebut berarti 22 (day), 04 (month),19(year), dan 0001 (jumlah digit yang mampu ditampung).

Hah 0001, berarti jumlah digit yang mampu ditampung juga 9999 donk?

Benar, jumlah digit yang mampu ditampung memang 9999. Tetapi, yang mampu ditampung adalah 9999 per-hari. Jika tanggalnya berubah, misalkan tanggal 23/04/2019 maka jumlah digit akan kembali ke 0001. Sehingga kode uniknya menjadi 23042019. Dalam arti kata kode unik berdasarkan tanggal ini mampu menampung 9999 transaksi perhari.

oke sekian dan terimakasih,
sumber terkait : http://mfikri.com
Wasalam

Posting Komentar

Not spam, Sara, Politik, Dan Vulgar

 
Top