123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- namespace App\Models;
- use Dcat\Admin\Traits\HasDateTimeFormatter;
- use Dcat\Admin\Traits\ModelTree;
- use Illuminate\Database\Eloquent\Model;
- use Spatie\EloquentSortable\Sortable;
- 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',
- ];
- /*
- * 关联产品参数
- */
- 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;
- }
- }
|