sohel / traverse-category
获取父类别的子类别和子类别的父类别
README
获取父类别的子类别和子类别的父类别
每次我构建一个新的Laravel应用程序,需要所有层级子类别的ID时,我都会发现自己多年来一直在重复使用相同的查询。这个包允许您准确找到父类别的子类别ID。这将加快开发进度。
安装
安装很简单,设置与其他Laravel包类似。
通过Composer安装
首先,通过Composer引入这个包
composer require sohel/traverse-category
用法
这个包易于使用。它提供了一些有用的函数。它是自动发现的包。因此,您只需要安装这个包并在需要的地方使用它。
[重要] 这个包不做什么
这不会返回模型表中所有结果。
数据库结构
类别表应该如下所示。
category_id
和其 parent_id
列必须在同一表中。
示例
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->bigInteger('parent_id')->nullable();
.....
.....
});
注意:根据需要更改表名和列名。
这个工具是如何工作的
如果您有超过2层的类别,您可能需要这个工具。
示例
Clothing
-->Men
-->Shirt
-->Pant
-->Shoe
-->Sneakers
-->Formal Shoes
-->Sandals
.....
-->Women
-->T-Shirt
-->Pant
-->Shoe
-->Fashion Boots
-->Flip Flops
-->Ballet Flats
.....
-->Kids
-->Shirt
-->Pant
-->Shoe
.....
子ID
现在,如果您需要Clothing
类别的所有层级ID,最终您必须获取Clothing
下所有类别的ID。
我们有一个名为getAllChildCategoryIds()
的方法,它提供了您所需的子ID以及parent_id
。您只需要用一些参数调用此方法。
参数是:table_name
,primary_key_column_name
,parent_id_column_name
,parent_categroy_id
,db_connection
(可选)。
注意:db_connection
的默认值是'mysql'。
示例
use Sohel\TraverseCategory\Facades\TraverseCategory;
class TestClass
{
public function testFunction()
{
$categoy_ids = TraverseCategory::getAllChildCategoryIds('categories', 'id', 'parent_id', 3);
return $category_ids; //sample output [3, 5, 7, 10, 21, 22, .....]
}
}
此方法将提供一个ID数组。如果没有找到任何内容,则结果将为空数组。
我们还有一个名为getDirectChildCategoryIds()
的方法,它将仅提供直接子ID。如果您需要Clothing
类别的直接子类别,则此方法将返回men
、women
和kids
的ID。
此方法也接受上述参数。
示例
use Sohel\TraverseCategory\Facades\TraverseCategory;
class TestClass
{
public function testFunction()
{
$categoy_ids = TraverseCategory::getDirectChildCategoryIds('categories', 'id', 'parent_id', 3);
return $category_ids; //sample output [5, 7, 10]
}
}
父ID
要获取所有层级父ID,我们可以使用getAllParentCategoryIds()
。参数与上述相同。
联系
我总是在Twitter上,这是一个与我交流的好方式。在Twitter上关注我。