2016-06-11 134 views
0

我正在使用Laravel 5.2。 我有2 Eloquent Models喜欢这个 -显示种类和子类别在Laravel

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

任何人都可以请帮助,为什么我找到这个错误?

+0

请做var_dump($ categories); die;在你的看法和显示结果。 –

回答

1

您的子类别关系名称在第二个foreach中是错误的。它应该是

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

而不是sub_category

+0

谢谢,它正在工作 –