我目前有 2 个表category,subcategory并且一切正常,但我需要另一个级别的子类别,就像category->sub->sub我试图找到一个合理的解决方案一样,我最终得到了一堆包来为我处理。
提前致谢。
Sov*_*von 10
您不需要依赖包来实现这一点。
你可以categories像下面这样设计你的表:
|----------|------------|---------------|
| id | name | category_id |
|----------|------------|---------------|
Run Code Online (Sandbox Code Playgroud)
这里category_id可为空场和参照外键id的categories表。
对于类别category_id字段将是NULL子类别category_id将是它的父类别 ID。对于子子类别,category_id将是父子类别 ID。
在模型中,您可以编写如下关系:
分类.php
/**
* Get the sub categories for the category.
*/
public function categories()
{
return $this->hasMany(Category::class);
}
Run Code Online (Sandbox Code Playgroud)
现在你可以得到你的子类别,比如$category->categories.
注意:您不需要subcategory桌子,只有一张桌子可以完成这项工作。
更新 - 显示产品类别
更新Category.php:
/**
* Get the parent category that owns the category.
*/
public function parent()
{
return $this->belongsTo(Category::class);
}
Run Code Online (Sandbox Code Playgroud)
在Product.php:
/**
* Get the category that owns the product.
*/
public function category()
{
return $this->belongsTo(Category::class);
}
Run Code Online (Sandbox Code Playgroud)
现在,您需要获取产品类别及其所有父项。它将是从父母到孩子的一系列类别。然后你就可以随意展示了。
$category = $product->category;
$categories = [$category];
while (!is_null($category) && !is_null($category = $category->parent)) {
$categories.unshift($category);
}
// $categories = ['parent category', 'sub category', 'sub sub category' ..]
Run Code Online (Sandbox Code Playgroud)
按顺序显示类别标题
foreach ($categories as $category) {
echo $category->title . '<br>';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4655 次 |
| 最近记录: |