2017-10-04 1 views
0

Je veux faire la connexion entre deux tables, catégories et sous-catégories, pour les afficher dans la barre de navigation. Id_parent correspond à l'ID de table de catégorieRelation entre les différentes lignes de 2 tables 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 

modèle Subcategory.php

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

category.php Modèle

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

PostsController.php Contrôleur

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

    } 
} 

Navbar.blade .php. Est lié à 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 

En ce moment il affiche Lits Lits Matelas Mattresses.How puis-je faire pour afficher en premier lieu les catégories et sous-catégories après? Désolé pour mon anglais.

+1

Pourquoi "$ subcategory = Subcategory = avec ('category') -> get();' Pourquoi ne pas faire 'Category :: with ('sous-catégorie') -> get()' pour que vous puissiez le boucler correctement – Ohgodwhy

Répondre

1

Cela se produit parce que vous obtenez le nom de la catégorie pour chaque sous-catégorie.

Vous pouvez faire l'inverse dans votre contrôleur, au lieu d'obtenir les sous-catégories avec des catégories, vous obtenez les catégories avec des sous-catégories.

Au lieu de: Subcategory::with('category')->get();

Do: Category::with('subcategory')->get();

Alors à votre avis, faire un foreach normal:

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

Merci père pour l'aide. J'ai lutté pendant des heures pour résoudre ce problème. 10XThx. – Sergiu