在laravel中显示类别级别

时间:2018-05-10 14:53:50

标签: php laravel

假设我有parent->child one下的产品和parent->child one->child one child下的另一个产品我可以得到的最后一个类别名称如下: child onechild 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类别。

1 个答案:

答案 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获取父类别。