<?php namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; use Dcat\Admin\Traits\ModelTree; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Session; use Spatie\EloquentSortable\Sortable; use Illuminate\Database\Eloquent\Scope; use App\Distributor\Scopes; class DistProductCategory extends Model implements Sortable { use HasDateTimeFormatter, ModelTree { ModelTree::boot as treeBoot; } use HasDateTimeFormatter; protected $table = 'dist_product_category'; //名称 protected $titleColumn = 'name'; //排序 protected $orderColumn = 'order'; //父级 protected $parentColumn = 'parent_id'; protected $casts = [ 'created_at' => 'datetime:Y-m-d H:i:s', 'updated_at' => 'datetime:Y-m-d H:i:s', ]; protected $fillable = [ 'name', 'parent_id', 'order','enabled','dist_id','slug','created_at', 'updated_at',// 假设已有的可填充字段 'seo_title', 'seo_keywords', 'seo_description', ]; protected $distributor = null; /* * 关联产品参数 */ public function distProductParameter() { return $this->hasOne(DistProductParameter::class,'id','parameter_id'); } public static function selectOptions(\Closure $closure = null) { $options = (new static())->withQuery($closure)->buildSelectOptions(); return collect($options)->all(); } public function getAllCategories($parentId = null) { // Retrieve categories with the specified parentId, or all if no parentId is specified $query = self::query(); if ($parentId !== null) { $query->where('parent_id', $parentId); } $categories = $query->orderBy($this->orderColumn)->get(); // If you want a hierarchical structure, you can recursively build it $categories->each(function ($category) { $category->children = $category->getAllCategories($category->id); }); return $categories; } }