zoukankan      html  css  js  c++  java
  • Yii2.0 添加分类category model类

    <?php
    
    namespace appmodels;
    
    use yiidbActiveRecord;
    use Yii;
    use yiihelpersArrayHelper;
    
    class Category extends ActiveRecord
    {
        public static function tableName()
        {
            return "{{%category}}";
        }
    
        public function attributeLabels()
        {
            return [
                'parentid' => '上级分类',
                'title' => '分类名称'
            ];
        }
    
        public function rules()
        {
            return [
                ['parentid', 'required', 'message' => '上级分类不能为空'],
                ['title', 'required', 'message' => '标题名称不能为空'],
                ['createtime', 'safe']
            ];
        }
    
        public function add($data)
        {
            $data['Category']['createtime'] = time();
            if ($this->load($data) && $this->save()) {
                return true;
            }
            return false;
        }
    
        public function getData()
        {
            $cates = self::find()->all();
            $cates = ArrayHelper::toArray($cates);
            return $cates;
        }
    
        public function getTree($cates, $pid = 0)
        {
            $tree = [];
            foreach($cates as $cate) {
                if ($cate['parentid'] == $pid) {
                    $tree[] = $cate;
                    $tree = array_merge($tree, $this->getTree($cates, $cate['cateid']));
                }
            }
            return $tree;
        }
    
        public function setPrefix($data, $p = "|-----")
        {
            $tree = [];
            $num = 1;
            $prefix = [0 => 1];
            while($val = current($data)) {
                $key = key($data);
                if ($key > 0) {
                    if ($data[$key - 1]['parentid'] != $val['parentid']) {
                        $num ++;
                    }
                }
                if (array_key_exists($val['parentid'], $prefix)) {
                    $num = $prefix[$val['parentid']];
                }
                $val['title'] = str_repeat($p, $num).$val['title'];
                $prefix[$val['parentid']] = $num;
                $tree[] = $val;
                next($data);
            }
            return $tree;
        }
    
        public function getOptions()
        {
            $data = $this->getData();
            $tree = $this->getTree($data);
            $tree = $this->setPrefix($tree);
            $options = ['添加顶级分类'];
            foreach($tree as $cate) {
                $options[$cate['cateid']] = $cate['title'];
            }
            return $options;
        }
    
        public function getTreeList()
        {
            $data = $this->getData();
            $tree = $this->getTree($data);
            return $tree = $this->setPrefix($tree);
        }
    
        public static function getMenu()
        {
            $top = self::find()->where('parentid = :pid', [":pid" => 0])->limit(11)->orderby('createtime asc')->asArray()->all();
            $data = [];
            foreach((array)$top as $k=>$cate) {
                $cate['children'] = self::find()->where("parentid = :pid", [":pid" => $cate['cateid']])->limit(10)->asArray()->all();
                $data[$k] = $cate;
            }
            return $data;
        }
    
    }
  • 相关阅读:
    文件上传和下载
    代理模式
    设计模式分类
    单例模式
    抽象工厂模式
    成长
    Java教程
    python面试大全
    python入门教程
    收藏网摘
  • 原文地址:https://www.cnblogs.com/Czc963239044/p/6359861.html
Copyright © 2011-2022 走看看