在Laravel中显示类别和子类别

时间:2016-06-11 06:07:04

标签: laravel laravel-5 laravel-5.2 blade laravel-blade

我正在使用Laravel 5.2。 我有2 Eloquent Models喜欢这个 -

Category.php -

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $table        =   'categories';           //Table Name
    public $timestamps      =   false;
    public $incrementing    =   false;                  //For Non integer Primary key
    protected $primaryKey   =   'name';

    protected $fillable     =   [
                                    'name'
                                ];

    public function SubCategory()
    {
        return $this->hasMany('App\SubCategory', 'category_id', 'id');
    }
}

SubCategory.php -

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class SubCategory extends Model
{
    protected $table    =   'sub_categories';           //Table Name
    public $timestamps  =   false;

    protected $fillable     =   [
                                    'category_id',
                                    'name'
                                ];
}

所以,现在如果我在控制器中调用它 -

return Category::with('SubCategory')->get();

我得到这样的东西 -

[
  {
    "id": 3,
    "name": "Beahan-Mueller",
    "sub_category": [
      {
        "id": 27,
        "category_id": 3,
        "name": "Carroll Trail"
      },
      {
        "id": 3,
        "category_id": 3,
        "name": "Davis Lake"
      },
      {
        "id": 9,
        "category_id": 3,
        "name": "Lehner Ranch"
      }
    ]
  },
  {
    "id": 10,
    "name": "Beahan, Stark and McKenzi",
    "sub_category": [
      {
        "id": 1,
        "category_id": 10,
        "name": "Dibbert Summit"
      },
      {
        "id": 18,
        "category_id": 10,
        "name": "Kris Mount"
      }
    ]
  }
]

所以,我可以说子类别链接正常,对吗?

但我的问题是,如果我想用刀片来显示这样的值 -

控制器 -

return view('public.listing.main', [
                                        'current_page'          =>  'Add Listing',
                                        'categories'            =>  Category::with('SubCategory')->get()
                                    ]);

查看 -

@foreach ($categories as $category)
    <li class="no-border">
        <label class="pull-left">
            <input type="checkbox" name="cat_{{ $category->id }}" checked>
            <strong> {{ $category->name }} (21)</strong>
        </label>
        <ul>
            @foreach($category->sub_category as $sub_cat)
                <li>
                    <label class="pull-left">
                        <input type="checkbox" checked value="{{ $sub_cat->id }}"> {{ $sub_cat->name }} (7)
                    </label>
                </li>
            @endforeach
        </ul>

    </li>
@endforeach

我发现错误 -

Laravel Error

有人可以帮忙,为什么我发现这个错误?

1 个答案:

答案 0 :(得分:3)

你的subCategory关系名称在第二个foreach中是错误的。它应该是

@foreach($category->subCategory as $sub_cat)
    // code here
@endforeach

而不是sub_category