【问题标题】:How to return subcategory in category nav menu in laravel如何在laravel的类别导航菜单中返回子类别
【发布时间】:2020-04-13 21:50:50
【问题描述】:

我已使用 AppServiceProvider 对所有页面可用,我想在导航菜单中将所有子类别加载到它们自己的类别中,现在它将加载所有类别,并在最后一个类别中列出表中的所有子类别,请帮助。

here is image sample

header.blade.php

 @foreach($shareData['categories'] as $category)
      <li class="dropdown m-menu-fw">
        <a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
                                <span><i class="fa fa-angle-down"></i></span></a>

                                @endforeach
                                <ul class="dropdown-menu" >
                                    <li>
                                        <div class="m-menu-content" style="text-align: center;">
                                            <ul class="col-sm-12" >
                                                <li class="dropdown-header">{{ $category->name }}</li>
                                                @foreach($shareData['subcategories'] as $subcategory)
                                                <li><a href="#">{{ $subcategory->name }}</a></li>
                                                @endforeach
                                            </ul>



                                        </div>
                                    </li>
                                </ul>
                            </li>

AppServicePrivider.php

 $categories = Category::where('status',1)->get(); 
        $subcategories = Subcategory::where('status',1)->get();
$shareData = array( 
'categories'=>$categories,
'subcategories'=>$subcategories
);

       view()->share('shareData',$shareData);

Category.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $table = 'categories';


    public function posts(){
        return $this->hasMany('App\Post');
    }

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


【问题讨论】:

  • 欢迎来到安德里亚的 StackOverflow。请用数据库结构更新您的问题。
  • @OlegNurutdinov 我做了

标签: php laravel laravel-5.8


【解决方案1】:

让你的 header.blade.php 像这样:

@foreach($shareData['categories'] as $category)
  <li class="dropdown m-menu-fw">
    <a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
                            <span><i class="fa fa-angle-down"></i></span></a>


                            <ul class="dropdown-menu" >
                                <li>
                                    <div class="m-menu-content" style="text-align: center;">
                                        <ul class="col-sm-12" >
                                            <li class="dropdown-header">{{ $category->name }}</li>

                                            @foreach($category['subcategory'] as $subcategory)
                                            <li><a href="{{ url('/subcategory') }}/{{ $subcategory->id }}">{{ $subcategory->name }}</a></li>
                                            @endforeach
                                        </ul>



                                    </div>
                                </li>
                            </ul>
                        </li>

@endforeach

让你的 AppServiceProvider 像下面的代码:

$categories = Category::where('status',1)->get(); 

$shareData = array( 
'categories'=>$categories
);

       view()->share('shareData',$shareData);

【讨论】:

    【解决方案2】:

    您应该直接在类别查询中使用with('subcategory')

    view()->share('shareData',Category::with('subcategory')->where('status',1)->get());
    

    那么你的刀片视图可能是:

    @foreach($shareData['categories'] as $category)
        <li class="dropdown m-menu-fw">
            <a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
                <span><i class="fa fa-angle-down"></i></span></a>
    
            <ul class="dropdown-menu">
                <li>
                    <div class="m-menu-content" style="text-align: center;">
                        <ul class="col-sm-12">
                            <li class="dropdown-header">{{ $category->name }}</li>
                            @foreach($category['subcategory'] as $subcategory)
                                <li><a href="#">{{ $subcategory->name }}</a></li>
                            @endforeach
                        </ul>
                    </div>
                </li>
            </ul>
        </li>
    @endforeach
    

    我会将关系方法从subcategory() 更改为subcategories(),因为它是HasMany 关系。

    【讨论】:

      猜你喜欢
      • 2018-10-09
      • 2012-03-30
      • 2015-09-26
      • 2017-09-11
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多