old-hotel-charge/app/Models/Zone.php

50 lines
1.1 KiB
PHP

<?php
namespace App\Models;
use Dcat\Admin\Traits\ModelTree;
use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
class Zone extends Model
{
use Filterable, ModelTree;
protected $fillable = ['name', 'parent_id', 'type', 'index'];
protected $titleColumn = 'name';
protected $orderColumn = 'id';
protected $parentColumn = 'parent_id';
public static function selectOptions(\Closure $closure = null, $cache = true)
{
if (!$cache) {
Cache::forget('admin_zone_select_options');
}
if (Cache::has('admin_zone_select_options')) {
return Cache::get('admin_zone_select_options');
}
$options = (new static())->withQuery($closure)->buildSelectOptions();
$data = collect($options)->all();
Cache::put('admin_zone_select_options', $data);
return $data;
}
public function parent()
{
return $this->belongsTo(self::class, 'parent_id');
}
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
}