显示类别的子类别

问题描述 投票:1回答:2

我试图将类别及其子类别显示为电子商店,我有一个下拉列表等等。

我的问题是,我的子类别项目根本不显示,并且没有错误。

这是我的分类模型代码

class kategorijas extends Model
{
    //relācija ar modeli apakskategorijas
    public function apakskategorija()
    {
        return $this->hasMany('apakskategorijas');
    }

}

这是我的子类别模型代码

class apakskategorijas extends Model
{
    //relācija ar modeli kategorijas
    public function kategorija()
    {
        return $this->belongsTo('kategorijas');
    }
}

然后来我的路由控制器代码

public function mainpage()
   {
        $kat_id = kategorijas::find('id');
        $apakskat = apakskategorijas::where('kategorijas_id','=',$kat_id)->get();
        $kat = kategorijas::All();       
        return view ('master',compact('kat','apakskat'));
   }

而自己的大男孩,观点

<div class="kp-menu-container">

            <!-- // left menu.... -->
            <ul class="main">
                @foreach($kat as $kategorijas)
                    <li><a href="">{{$kategorijas->nosaukums}}</a></li>
                @endforeach
            </ul>

            <!-- // right menu....... -->
            <div class="kp-submenu-container">
                @foreach($kat as $kategorijas)
                    <div class="submenu-content">
                        <h3>{{$kategorijas->nosaukums}}</h3>
                        <ul>
                            @foreach((array)$kategorijas->apakskat as $apakskategorijas)
                                <li><a href="">{{$apakskategorijas->nosaukums}}</a></li>
                            @endforeach
                        </ul>
                    </div>
                @endforeach
            </div>
        </div>

我搜索了很多论坛,在stackoverflow中查看了这里,但似乎无法找到解决方案,这就是为什么我要求你们所有人帮我解决这个问题。

谢谢你们。

如果您需要迁移代码:

类别

public function up()
    {
        Schema::create('kategorijas', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nosaukums');
            $table->timestamps();
        });
    }

子目录

public function up()
    {
        Schema::create('apakskategorijas', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nosaukums');
            $table->integer('kategorijas_id')->unsigned()->index();
            $table->foreign('kategorijas_id')->references('id')->on('kategorijas');
            $table->timestamps();
        });
    }
php laravel
2个回答
1
投票

如果要使用ID = $kat_id显示类别的子类别,请将代码更改为:

@foreach ($apakskat as $apakskategorijas)

如果要显示具有相关子类别的所有类别,请在控制器中加载它们:

$kat = kategorijas::with('apakskategorija')->get();

并迭代视图中的子类别:

@foreach ($kategorijas->apakskategorija as $apakskategorijas)

另外,修复关系:

public function apakskategorija()
{
    return $this->hasMany(apakskategorijas::class, 'kategorijas_id');
}

0
投票

看看这个,我在我的网站上做了这个。它会更容易:

  • 移民: public function up(){Schema :: create('categories',function(Blueprint $ table){$ table-> increments('id'); $ table-> string('title_en',500); $ table->整数('parent_id') - > unsinged() - > nullable();}); } 模型: class Category extends Model {public function children(){return $ this-> hasMany(Category :: class,'parent_id','id'); } public static function getAll(){ $categories = self::with('children')->get(); return $categories->toArray(); } } 控制器: public function index(){$ categories = Category :: with('children') - > where(['user_id'=> Auth :: id()]) - > whereNull('parent_id') - > get(); return view('category.index',['categories'=> $ categories-> toArray()]); }

视图:

           @foreach( \App\Entity\Category::getAll() as $cat)
                @if(is_null($cat['parent_id']))
                <li><a href="/home/{{ $cat['id'] }}"><i class="icon-gift"></i><span class="px-nav-label"> {{ $cat['title_'.app()->getLocale()] }} </span></a>
                    @if(isset($cat['children']) && count($cat['children'])>0 )
                        <ul>
                        @foreach($cat['children'] as $subCat)
                                <li><a href="/home/{{ $subCat['id'] }}"><i class="icon-gift"></i><span class="px-nav-label"> {{ $subCat['title_'.app()->getLocale()] }} </span></a></li>
                        @endforeach
                        </ul>
                    @endif
                </li>
                @endif
            @endforeach
© www.soinside.com 2019 - 2024. All rights reserved.