【问题标题】:Troubles with getting sub-categories of main category in Laravel在 Laravel 中获取主类别的子类别的问题
【发布时间】:2017-10-09 13:53:07
【问题描述】:

我正在尝试学习 Laravel,同时编写一些常用功能。现在我要做的是当我单击主类别链接以打开新页面并显示分配给该类别的所有子类别时。听起来很简单,但我无法显示它们。

这就是我的类别模型中的内容

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

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

在控制器中

public function categoryListing( $category_id )
{

    $categories = Category::with('children')->get();    

    $category = Category::find($category_id);

    if($category->parent_id == 0) {

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

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

    } else {
        $items =  Item::where('category_id' ,$category_id)->paginate(5);
    }

    return view('category_list', compact('categories','items'));
}

这里的想法是显示主类别和该主类别的所有子类别(子类别)。 这是页面上的循环

@foreach($categories as $category)
    <a href="{!!route('list',array($category->id))!!}">
        <span><strong>{!!$category->title!!}</strong> ({!! $category->itemCount!!})</span>
    </a>
    <ul class="list-group">
        @foreach($category as $subcategory)
            <a href="{!!route('list',array($subcategory->id))!!}">{!!$subcategory->title!!}</a>
            <span class="badge badge-primary badge-pill">{!! $subcategory->itemCount !!}</span>
        </li>
        @endforeach
    </ul>
@endforeach

当前错误是

试图获取非对象的属性

在foreach的内部。

【问题讨论】:

  • 您能否在 foreach 中尝试使用此 $subcategory['title'];$subcategory['temCount'];
  • 它正在返回有线的东西。结果是第一个 foreach 上的所有类别和子类别。应该显示子类别的第二个 foreach 是空的
  • 我知道这完全是一团糟,可能有更干净、更简单的方法来划分主类别和分配给它的子类别..

标签: php laravel laravel-5


【解决方案1】:

试试这个“更干净”。如果它有效,请开始添加您的链接和其他内容,这样您就会知道哪些无效。

@foreach($categories as $category)
    <span><strong>{!!$category->title!!}</strong></span>
     <ul class="list-group">
       @foreach($category as $subcategory)
          <li>{!!$subcategory->title!!}</li>
        @endforeach
    </ul>
@endforeach

确保您尝试打印的变量存在于每个对象中。

您可以尝试在您的控制器中 dd($categories); 在 return view('category_list', compact('categories','items')); 语句之前查看 $categories 里面的内容

【讨论】:

  • 谢谢,但在第二行 {!!$subcategory-&gt;title!!} 中得到“尝试获取非对象...”。我试图更改{!!$subcategory['title']!!},但它是空的。 dd($categories); 返回所有类别而不是我点击的单个类别,id 是 $category_id
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 2023-03-31
  • 2016-05-15
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2021-08-28
相关资源
最近更新 更多