admin/app/common/models/Category.php

115 lines
2.5 KiB
PHP

<?php
namespace app\common\models;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* Created by PhpStorm.
* Author:
* Date: 2017/2/22
* Time: 下午5:54
*/
class Category extends BaseModel
{
use SoftDeletes;
public $table = 'yz_category';
public $attributes = [
'display_order' => 0,
'thumb' => '',
'description' => '',
'adv_img' => '',
'adv_url' => '',
];
/**
* 不可填充字段.
*
* @var array
*/
protected $guarded = [''];
//protected $fillable = [''];
/**
* @param $parent_id
* @param $pageSize
* @return mixed
*/
public static function getCategorys($parentId)
{
return self::uniacid()
->where('parent_id', $parentId)
->orderBy('display_order', 'desc');
}
public static function checkCategory($ids=[]){
if (!$ids) return false;
if(!$category_data = self::uniacid()->whereIn('id',$ids)->orderBy('level','ASC')->get()) return false;
$parent_id = 0;
$category_data->each(function ($v) use (&$parent_id){
if ($v->level != 1 && $v->parent_id != $parent_id){
return false;
}
$parent_id =$v->id;
});
return true;
}
/**
* @param $parentId
* @param $set
* @return mixed
*/
public static function getChildrenCategorys($parentId, $set = [])
{
$model = self::uniacid();
if ($set['cat_level'] == 3) {
$model->with(['hasManyChildren'=>function($qurey){
return $qurey->where('enabled', 1)
->orderBy('display_order', 'desc');
}]);
}
$model->where('parent_id', $parentId);
$model->where('enabled', 1);
$model->orderBy('display_order', 'desc');
$model->orderBy('id', 'asc');
return $model;
}
/**
* @return mixed
*/
public static function getRecommentCategoryList()
{
$model = self::uniacid();
return $model;
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function hasManyChildren()
{
return $this->hasMany(self::class, "parent_id");
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function goodsCategories()
{
return $this->hasMany('app\common\models\GoodsCategory', 'category_id', 'id');
}
public function scopePluginId($query)
{
return $query->where('plugin_id', 0);
}
}