- 分类表定义如下:
字段名称 | 字段类型 | 字段描述 |
---|---|---|
id | unsigned int primary key | 自增主键 |
pid | unsigned int | 父级分类ID |
cate_name | varchar(30) | 分类名称 |
一个分类只能有一个父级,对应操作使用hasOne, 一个分类可以有多个子分类,对应操作使用hasMany即可, 使用get_class方法来获取类名。
代码如下:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class CategoriesModel extends Model { protected $table = 'categories'; protected $fillable = ['pid', 'cate_name', 'sort']; protected $with = [ 'parent' ]; // 该分类下的品牌 public function brand() { return $this->hasMany(BrandModel::class, 'cate_id', $this->getKeyName()); } /** * 该分类的子分类 */ public function child() { return $this->hasMany(get_class($this), 'pid', $this->getKeyName()); } /** * 该分类的父分类 */ public function parent() { return $this->hasOne(get_class($this), $this->getKeyName(), 'pid'); } }
- 使用示例:
protected function grid() { $grid = new Grid(new CategoriesModel()); $grid->column('id', __('Id')); $grid->column('cate_name', __('Category Name')); $grid->column('parent.cate_name', __('Parent Category')); $grid->column('created_at', __('Created at')); $grid->column('updated_at', __('Updated at')); return $grid; }