显示类别的子类别

时间:2017-12-23 20:41:08

标签: php laravel

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

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

这是我的类别型号代码

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();
        });
    }

Subcategroy

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();
        });
    }

2 个答案:

答案 0 :(得分: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');
}

答案 1 :(得分:0)

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

  • 迁移:

    公共功能向上() {     Schema :: create(&#39; categories&#39;,function(Blueprint $ table){         $表 - &GT;增量(&#39; ID&#39);         $ table-&gt; string(&#39; title_en&#39;,500);         $表 - &GT;整数(&#39; PARENT_ID&#39;) - &GT; unsinged() - &GT;可为空的();     }); }

    • 型号:

    class Category扩展Model {     public function children(){         返回$ this-&gt; hasMany(Category :: class,&#39; parent_id&#39;,&#39; id&#39;);     }

    public static function getAll(){
        $categories = self::with('children')->get();
        return $categories->toArray();
    }
    

    }

    • 控制器:

    公共职能指数()     {         $ categories = Category :: with(&#39; children&#39;)              - &gt; where([&#39; user_id&#39; =&gt; Auth :: id()])              - &GT; whereNull(&#39; PARENT_ID&#39;)              - &GT;得到();         返回视图(&#39; category.index&#39;,[&#39;类别&#39; =&gt; $ categories-&gt; 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
相关问题