Hi, Berikut merupakan catatan pribadi penulis ketika memulai project menggunakan Laravel.
[1] Buat 1 Folder Models di App/Models lalu setiap menambahkan file model copy paste dan sesuaikan template dibawah ini:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class md_bp extends Model
{
protected $table = 'md_bp';
protected $primaryKey = ['client', 'bpid'];
//fillable berguna untuk mendaftarkan atribut (nama kolom) yang bisa kita isi ketika melakukan insert atau update ke database
protected $fillable = ['client',
'bpid', 'bpname'];
public $incrementing = false;
protected $keyType = 'string';
public $timestamps = true; //created_at otomatis terisi
//Kita biasa menyimpan tipe data boolean sebagai tinyint di database.
protected $casts = [
'status' => 'boolean'
];
}
[2] Berikut merupakan cara untuk insert model di controller laravel
use App\Models\md_bp;
....
$vmd_bp = new md_bp;
$vmd_bp->client = $request->client;
$vmd_bp->bpid = $request->bpid;
$vmd_bp->bpname = $request->bpname;
$vmd_bp->save();
[3] Berikut merupakan cara update data menggunakan model di controller laravel
App\Models\md_bp::where('client', '12121')
->where('bpid', '1212121')
->update(['bpname' => 'Nama Ucok']);
[4] Berikut merupakan cara Create / Update secara otomatis menggunakan laravel
$flight = App\Models\md_bp::updateOrCreate(
['client' => '12121', 'bpid' => '1212121'],
['bpname' => 'WAHYU AMALDI']
);
[5] Jika ingin melakukan hapus data
$deletedRows = App\Models\md_bp::where('client', '12121')->delete();
[6] Membuat Aturan Query / Query Scopes
Buat folder App/Scopes pada App lalu ketik code berikut:
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class bpidScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
*
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function apply(Builder $builder, Model $model)
{
$builder->where('bpid', '=', '121212');
}
}
Tambahkan di model yang akan dikoneksikan dengan global scope nya, misalkan model di point [1] kita tambahkan:
protected static function booted()
{
static::addGlobalScope(new bpidScope);
}
Atau bisa juga manual dibuat di modelnya langsung:
protected static function booted()
{
static::addGlobalScope('bpid', function (Builder $builder) {
$builder->where('bpid', '=', '121212');
});
}
Maka ketika kita melakukan query di controller md_bp::all()
menjadi
select * from `md_bp` where `bpid` = '121212'
Jika kondisi nya anda tidak ingin menggunakan global scope maka ketik:
md_bp::withoutGlobalScope(bpidScope::class)->get();
Atau bisa juga
md_bp::withoutGlobalScope('bpid')->get();
Oke, sampai disini dulu ya,
Semoga bermanfaat.