<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Encore\Admin\Traits\ModelTree; use Encore\Admin\Traits\AdminBuilder; //use Encore\Admin\Auth\Database\Role; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Encore\Admin\Facades\Admin; use Illuminate\Foundation\Auth\User; use App\Models\ArticleCategoryRole; use App\Models\Role; /** * App\Models\ArticleCategory * * @property int $id * @property string $category_name 分类名称 * @property int $parent_id 分类父id * @property int $list_order 排序 * @property string|null $title 标题 * @property string|null $keywords 关键字 * @property string|null $description 描述 * @property int $admin_set 是否为系统自带(1是0否) * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property string|null $deleted_at * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ArticleCategory[] $children * @property-read \App\Models\ArticleCategory $parent * @property-read \Illuminate\Database\Eloquent\Collection|\Encore\Admin\Auth\Database\Role[] $roles * @method static bool|null forceDelete() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory newQuery() * @method static \Illuminate\Database\Query\Builder|\App\Models\ArticleCategory onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory query() * @method static bool|null restore() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereAdminSet($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereCategoryName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereDescription($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereKeywords($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereListOrder($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereParentId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereTitle($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArticleCategory whereUpdatedAt($value) * @method static \Illuminate\Database\Query\Builder|\App\Models\ArticleCategory withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\ArticleCategory withoutTrashed() * @mixin \Eloquent */ class ArticleCategory extends Model { use SoftDeletes,AdminBuilder,ModelTree { ModelTree::boot as treeBoot; } protected $table = 'article_categorys'; public function __construct(array $attributes = []) { parent::__construct($attributes); $this->setParentColumn('parent_id'); $this->setOrderColumn('list_order'); $this->setTitleColumn('category_name'); } public function parent() { return $this->belongsTo(ArticleCategory::class, 'parent_id', 'id'); } public function children() { return $this->hasMany(ArticleCategory::class, 'parent_id', 'id'); } public function roles() : BelongsToMany { $pivotTable = 'article_category_roles'; $relatedModel = config('admin.database.roles_model'); return $this->belongsToMany($relatedModel, $pivotTable, 'article_category_id', 'role_id'); } protected static function boot() { static::treeBoot(); static::deleting(function ($model) { $model->roles()->detach(); }); } protected static function categoryIds() { $is_admin = Admin::user()->isAdministrator(); if ($is_admin) { $not_ids = null; } else { $user_roles = Admin::user()->roles->toArray(); $roles_ids = array(); if ($user_roles) { foreach ($user_roles as $k => $v) { $roles_ids[] = $v['pivot']['role_id']; } } //获取对应的分类id $rst = ArticleCategoryRole::whereIn('role_id', $roles_ids)->get(array('article_category_id'))->toArray(); $role_cates = array(); if ($rst) { foreach ($rst as $k => $v) { $role_cates[] = $v['article_category_id']; } } $not_cates = ArticleCategoryRole::whereNotIn('article_category_id', $role_cates)->get(array('article_category_id'))->toArray(); $not_ids = array(); if ($not_cates) { foreach ($not_cates as $k => $v) { $not_ids[] = $v['article_category_id']; } } } return $not_ids; } }