我试图将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();
});
}
答案 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