2017-10-04 101 views
0

我想在两个表,类别和子类别之间建立连接,以在导航栏中显示它们。 PARENT_ID对应于类别表ID来自2个表的不同行之间的关系Laravel

Table Categories 

ID Title 
1. Beds 
2. Mattresses 

Table Subcategories 

ID Title   Parent_id 
1. Superimposed  1 
2. Single   1 
3. Arches   2 
4. Foam    2 

Subcategory.php模型

Class Subcategory extends Model 
{ 
    public function category() 
    { 
     return $this->belongsTo('App\Category'); 
    } 
} 

Category.php模型

class Category extends Model 
{ 
    public function subcategory() 
    { 
     return $this->hasMany('App\Subcategory'); 
    } 
} 

PostsController.php控制器

class PostsController extends Controller 
{ 
    public function index() 
    { 
     $subcategory = Subcategory::with('category')->get(); 
     return view('posts.index', compact('subcategory')); 

    } 
} 

Navbar.blade .php。与posts.blade.php

<div class="navbar-collapse collapse" id="navigation"> 
      <ul class="nav navbar-nav navbar-left"> 
       <li class="active"><a href="">Acasa</a></li> 
        **@foreach($category as $subcat)** 
         <li class="dropdown yamm-fw"> 
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="200">**{{$subcat->category->category}}**<b class="caret"></b></a> 
          <ul class="dropdown-menu"> 
           <li> 
            <div class="yamm-content"> 
             <div class="row"> 
              <div class="col-sm-3"> 
               <h5>Categorii</h5> 
               <ul> 
                <li> 
                <a href="category.html">{**{Here i need to display the subcategories}**}</a> 
                </li> 
                @endforeach 
               </ul> 
              </div><!-- /.yamm-content --> 
             </div> 
            </div> 
           </li> 
          </ul> 
         </li> 

       @endforeach 

挂在这一刻它显示床床床垫Mattresses.How我可以做在首位,显示的类别和子类别之后?对不起我的英语不好。

+1

为什么'$ subcategory = Subcategory :: with('category') - > get();'为什么不做'Category :: with('subcategory') - > get()',这样你就可以正确地循环它 – Ohgodwhy

回答

1

发生这种情况是因为您正在获取每个子类别的类别名称。

你可以在你的控制器中做相反的事情,而不是获得具有类别的子类别,你会得到具有子类别的类别。

相反的:Subcategory::with('category')->get();

务必:Category::with('subcategory')->get();

那么在你看来,做一个普通的foreach:

PostsController.php

<?php 
class PostsController extends Controller 
{ 
    public function index() 
    { 
     $categories = Category::with('subcategory')->get(); 
     return view('posts.index', compact('categories')); 
    } 
} 

Index.blade.php

@foreach($categories as $category) 
    <li class="dropdown yamm-fw"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="200"> 
      **{{$category->title (or whatever the name is)}}**<b class="caret"></b> 
     </a> 
     <ul class="dropdown-menu"> 
      <li> 
       <div class="yamm-content"> 
        <div class="row"> 
         <div class="col-sm-3"> 
          <h5>Categorii</h5> 
           <ul> 
            @foreach($category->subcategory as $sub) 
             <li> 
              <a href="category.html"> 
               {{ $sub->title (or whatever the name is)}} 
              </a> 
              </li> 
             @endforeach 
           </ul> 
          <!-- Closing tags here --> 
@endforeach 
+0

谢谢你的帮助。我一直在努力解决这个问题。 10XThx。 – Sergiu