sohel/traverse-category

获取父类别的子类别和子类别的父类别

v1.1.0 2022-08-31 10:26 UTC

This package is auto-updated.

Last update: 2024-09-29 06:09:10 UTC


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_nameprimary_key_column_nameparent_id_column_nameparent_categroy_iddb_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类别的直接子类别,则此方法将返回menwomenkids的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上关注我