yii2框架使用嵌套集合实现无限极商品分类

更新时间:2024-04-23 13:52:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

让每一名学员高薪就业

1.使用composer安装nested_sets插件

composer require creocoder/yii2-nested-sets

2.创建商品分类表的数据迁移

yii migrate/create create_category_table 数据迁移类的内容如下:

$this->createTable('{{êtegory}}', [ 'id'=> $this->primaryKey(), 'tree' => $this->integer()->notNull(), 'lft'=> $this->integer()->notNull(), 'rgt'=> $this->integer()->notNull(), 'depth'=> $this->integer()->notNull(), 'name'=> $this->string()->notNull(), ]);

3.创建商品分类活动记录Category

usecreocoder\\nestedsets\\NestedSetsBehavior; class Category extends\\yii\\db\\ActiveRecord { publicfunctionbehaviors() { return [ 'tree'=> [

'class'=>NestedSetsBehavior::className(), 'treeAttribute' => 'tree', // 'leftAttribute' => 'lft', // 'rightAttribute' => 'rgt', // 'depthAttribute' => 'depth', ], ]; }

publicfunctiontransactions() { return [

self::SCENARIO_DEFAULT=>self::OP_ALL, ]; }

publicstaticfunctionfind() {

官网:www.itsource.cn 微信公众号:itsource

} }

每一名学员高薪就业

returnnew CategoryQuery(get_called_class());

4.创建分类查询器CategoryQuery

usecreocoder\\nestedsets\\NestedSetsQueryBehavior; class CategoryQueryextends\\yii\\db\\ActiveQuery { publicfunctionbehaviors() { return [

NestedSetsQueryBehavior::className(), ]; } }

5.如何使用

创建一级分类 创建家用电器分类

$category1 =new Category (['name'=>'家用电器']); $category1 ->makeRoot();

创建出来的树像下面这样

- 家用电器

创建子分类大家电

$category2 =new Category (['name'=>'大家电']); $category2 ->prependTo($category1);

结构如下

- 家用电器 - 大家电

获取所有一级分类

$roots = Category::find()->roots()->all();

官网:www.itsource.cn 微信公众号:itsource

让每一名学员高薪就业

获取所有子分类

$leaves = Category::find()->leaves()->all();

获取某分类的所有子孙分类

$category1 = Category::findOne(['name'=>'->leaves()->all();

家用电器']); $leaves = $category1

获取某节点的所有子分类

$category1 = Category::findOne(['name'=>'家用电器']); $children = $category1 ->children()->all();

获取某分类的第一个子分类

$category1 = Category::findOne(['name'=>'家用电器']); $children = $category1 ->children(1)->all();

获取某分类的所有父分类

$category2=

Category::findOne(['name'=>'

']);

$parents

=

$category2->parents()->all();

获取某分类的第一个父分类

$category2=

Category::findOne(['name'=>'

']);

$parent

=

$category2->parents(1)->one();

官网:www.itsource.cn 微信公众号:itsource

本文来源:https://www.bwwdw.com/article/g08p.html

Top