$this->id]); return $this->belongsTo(JenisKartu::class,'ctdesc','code'); } /** * Scope untuk mendapatkan kartu ATM yang aktif * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeActive($query) { Log::info('Menggunakan scope active untuk filter kartu ATM aktif'); return $query->where('crsts', 1); } /** * Scope untuk mendapatkan kartu berdasarkan product_code * * @param \Illuminate\Database\Eloquent\Builder $query * @param string $productCode * @return \Illuminate\Database\Eloquent\Builder */ public function scopeByProductCode($query, $productCode) { Log::info('Menggunakan scope byProductCode', ['product_code' => $productCode]); return $query->where('product_code', $productCode); } /** * Accessor untuk mendapatkan product_code dengan format yang konsisten * * @param string $value * @return string|null */ public function getProductCodeAttribute($value) { return $value ? strtoupper(trim($value)) : null; } /** * Mutator untuk menyimpan product_code dengan format yang konsisten * * @param string $value * @return void */ public function setProductCodeAttribute($value) { $this->attributes['product_code'] = $value ? strtoupper(trim($value)) : null; Log::info('Product code diset untuk ATM card', [ 'card_id' => $this->id ?? 'new', 'product_code' => $this->attributes['product_code'] ]); } }