当前位置: 首页 > 知识库问答 >
问题:

显示主类别下的子类别和项目数

丌官翰采
2023-03-14

我是拉威尔的新手,在构建“真实世界”项目的同时,我也在努力学习。

我的项目是机密网站。目前,我正在按步骤显示所有类别、子类别和每个子类别下的项目数量。

在数据库中,我描述了名为categories的表中的所有类别(主类别和子类别)。有一个名为parent\u id的列,它是父类别(如果是子类别)的id。

在模型类别中。php我有

public function item()
{
    return $this->hasMany('Item','category_id');
}

public function children()
{
    return $this->hasMany('App\Category', 'parent_id');
}

public function getCategories()
{
    $categoires = Category::where('parent_id',0)->get();
    $categoires = $this->addRelation($categoires);
    return $categoires;
}

public function selectChild( $id )
{
    $categoires = Category::where('parent_id',$id)->get();
    $categoires = $this->addRelation($categoires);
    return $categoires;
}

public function addRelation( $categoires )
{

  $categoires->map(function( $item, $key)
  {             
        $sub = $this->selectChild($item->id);
        $item->itemCount = $this->getItemCount($item->id , $item->parent_id );
        return $item = array_add($item, 'subCategory', $sub);
    });
    return $categoires;
}

public function getItemCount( $category_id, $parent_id )
{

    if( $parent_id == 0)
    { // for root-caregory

         $ids = Category::select('id')->where('parent_id', $category_id)->get();
         $array = array();

         foreach ($ids as $id)
         {
            $array[] =  $id->id;
         }

         return Item::whereIn('category_id', $array )->count();
    }
    else
    {
        return Item::where('category_id', $category_id)->count();
    }
}

在我的控制器中

public function index()
{
    $Category = new Category;
    $allCategories = $Category->getCategories();
    return view('frontend.home', compact('allCategories'));
}

在视图中,这就是我显示父类别的方式

@foreach($allCategories as $cats)
     <li><a href="#">{{ $cats->title }}</a>/li>
@endforeach

我尝试的子类别是在foreach中添加一个if

@foreach($allCategories as $cats)
     <li><a href="#">{{ $cats->title }}</a>
          <ul class="sub-category">
              @if ($cats->children())
                <li><a href="#"> {{ $cats->children->title }} </a></li>
              @endif
          </ul>
     </li>
@endforeach

错误是

未定义的属性:Illumb\Database\Eloquent\Collection::$title

当我{{dd($所有类别)}}时,我看到它们在数组中。

共有1个答案

卫景明
2023-03-14

您的children关系将返回一个集合,而不是单个模型,因此您还必须通过子对象进行循环:

@foreach($allCategories as $cats)
    <li><a href="#">{{ $cats->title }}</a>
        <ul class="sub-category">
            @if($cats->children)
                @foreach($cats->children as $child)
                    <li><a href="#"> {{ $child->title }} </a></li>
                @endforeach
            @endif
        </ul>
    </li>
@endforeach
 类似资料:
  • 我需要一些关于Woocommerce类别显示选项的帮助。在Wordpress仪表板中,我按照以下链接全局设置类别显示选项<外观- 有三种显示选项可用。 展示产品 目前,选择了第三个选项,它显示子类别以及父类别和子类别下的所有产品。但是,我想排除子类别下的所有产品。换句话说,我只想在父类别下显示子类别和产品。 我在几个教程网站上找到了以下片段。代码完全按照我想要的方式工作,但它也禁用了管理产品搜索和

  • 我有一张分类表 我有文章表如下 和我的用户表作为 因此与这些数据我想显示所有的文章这是列在子类别 例如: 主要类别的url是:mydomain。子类别的com/cat/business url为:mydomian。com/cat/商业/广告 因此,当人们访问主类别时,它应该显示主类别上列出的文章的子类别,即使cat_id未被提及为主类别。我想在“业务类别”页面上列出业务子类别文章的所有子类别。 有

  • 我是初学者(PHP) 我显示这个日期在PHP嵌套'ul'喜欢(代码)- 一切都很好,没有问题。。。。我的问题,如果点击主分类得到我在这个类别中还没有主题。。。。我需要代码来选择用户是否在主类别中选择了主类别回显子类别——如果选择了子类别,则只显示子类别中的数据,或者用户是否在主类别示例中选择了主类别回显主题::我有类别Photosession和子类别- > 通知- 这是我选择帖子的代码 我认为我的

  • 我的类别表设计如下 我有三个级别的类别 < li >父项 < li >孩子 < li >子系 如何以下列方式显示它们? (SELECT*From类别):我得到以下数组,如下所示

  • 我是编程新手,目前正在尝试将主类别子类别显示为树。 已创建包含类别的菜单。现在,当我单击主类别名称时,我希望加载分配给该主类别的所有子类别中的所有产品。问题是我不明白如何构造我的查询。 在我的表类别中,我存储了主猫和子猫。当我向一些主类别添加子类别时,我将主类别ID存储在父类别ID列下。 示例 产品表有列 因此,当我点击maincatID=1时,它应该会显示id为1和2的产品,因为它们被分配给

  • 我正试图通过WoodPress主题中的一个函数从woocommerce获取产品类别,我已经做到了: 这将按层次列出所有顶级类别及其下的子类别,但我有子类别(子类别)的子类别,因此如何列出这些子类别。