50 lines
1.1 KiB
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');
|
|
}
|
|
}
|