123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?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;
- }
- }
|