假设我有parent->child one
下的产品和parent->child one->child one child
下的另一个产品我可以得到的最后一个类别名称如下:
child one
和child one child
但在他们面前的父母名字我无法得到。
类别模型:
public function categories()
{
return $this->hasMany(Category::class);
}
public function childs() {
return $this->hasMany(Category::class,'category_id','id') ;
}
public function products(){
return $this->hasMany(Product::class);
}
产品型号:
public function category(){
return $this->belongsTo(Category::class);
}
我将category id存储在products table,category_id
列中。
PS:在这一栏中,我存储了最后一个类别ID,就像我有:
parent->child one
我将child one
ID存储在那里。
根据答案我已经对我的类别模型进行了一些更改,并且通过下面的代码,我试图获得我的产品类别级别:
@if($product->category->isParent())
{{ucfirst($product->category->title)}} </br>
@else
{{ucfirst($product->category->parent->title)}} > {{ucfirst($product->category->title)}} </br>
@endif
上面的代码问题是:如果我的产品处于第三级(或更高级别),我只获得最后一个类别的父级,而不是最终的。 EXAMPLE
我的产品位于:Laptop->HP->PAVILION
我得到的是HP->PAVILION
无法获得laptop
类别。
答案 0 :(得分:1)
我不确定我是否理解得很好但是......
进入Category
模型
public function parent()
{
return $this->belongsTo(Category::class,'category_id');
}
public function childs() {
return $this->hasMany(Category::class);
}
public function isParent()
{
return !$this->category_id ? true : false; // if category_id is null => is a Parent Category
}
您可以$category->isParent()
知道父母是否是父母。
$category->childs
获取所有子类别。 $category->parent
获取父类别。