如何在类别和子类别之间创建关系
Posted
技术标签:
【中文标题】如何在类别和子类别之间创建关系【英文标题】:How toc create relations between category and subcategories 【发布时间】:2021-03-29 19:24:45 【问题描述】:我有 categories
和 subcategories
表
表格 catgeories
:
id
title
description
表格 subcategories
:
id
category_id
parent_category_id
categories
表的数据:
subcategories
表的数据
就我而言,任何类别都有无限的子类别。如何为模型建立关系多对多以获得所有类别和子类别?
【问题讨论】:
为什么不考虑将子类别放在同一个表中,并为其分配父级的parent_category_id。然后在类别模型中:您将拥有: public function subCategories() return $this->hasMany(Category::class, 'parent_category_id');最后: Category::with('subCategories')->all();这不容易吗? 【参考方案1】:我建议您将类别保留在如下表中
id | parent_id | name |
---|---|---|
1 | 0 | parent cat |
2 | 1 | child cat |
上表中parent_id值为0的为实际的父类别,编号为子类别,例如:child cate is child of parent cat,这样就可以实现无限的子类别。但是不要担心我们可以像您一样实现关系,请按照以下方式进行操作
我假设类别和子类别作为模型。在类别模型中编写如下关系
public function childCategories()
return $this->hasMany('\App\subcategories','parent_category_id','id')
->join('categories','categories.id','=','subcategories.categories')
->select("categories.title",'subcategories.*');
当你调用分类时,如下通过with调用它,你会得到相关子分类的分类
$categories = categories::with('childCategories')->get();
【讨论】:
【参考方案2】:要获取类别或子类别,您可以使用此
$allSubCategory = DB::table('sub_categories')->orderBy('id', 'DESC')
->join('categories', 'sub_categories.category_id', '=', 'categories.id')
->select('sub_categories.*', 'categories.category_name')
->get();
$allCategory = DB::table('categorys')->orderBy('id', 'DESC')
->join('sub_categories', 'categorys.category_id', '=', 'sub_categories.id')
->select('categorys.*', 'sub_categories.sub_category_name')
->get();
【讨论】:
以上是关于如何在类别和子类别之间创建关系的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Magento 中使用产品 URL 附加类别和子类别 slug