openclassify/Modules/Location/Models/City.php
2026-03-10 21:01:30 +03:00

57 lines
1.5 KiB
PHP

<?php
namespace Modules\Location\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Traits\LogsActivity;
class City extends Model
{
use LogsActivity;
protected $fillable = ['name', 'country_id', 'is_active'];
protected $casts = ['is_active' => 'boolean'];
public function scopeActive(Builder $query): Builder
{
return $query->where('is_active', true);
}
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
->logFillable()
->logOnlyDirty()
->dontSubmitEmptyLogs();
}
public function country()
{
return $this->belongsTo(Country::class);
}
public function districts()
{
return $this->hasMany(District::class);
}
public static function nameOptions(?string $countryName = null, bool $onlyActive = true): array
{
return static::query()
->when($onlyActive, fn (Builder $query): Builder => $query->active())
->when(
$countryName && trim($countryName) !== '',
fn (Builder $query): Builder => $query->whereHas(
'country',
fn (Builder $countryQuery): Builder => $countryQuery->where('name', trim($countryName)),
),
)
->orderBy('name')
->pluck('name', 'name')
->all();
}
}