我有两个名为category和sub-category的模型
Category.php
class Category extends Model
{
protected $table = 'category';
public $timestamps = false;
public function subCategory(){
return $this->hasMany('App\Subcategory', 'category_id');
}
}
Subcategory.php
class Subcategory extends Model
{
protected $table = 'subcategory';
public $timestamps = false;
public function subCategory() {
return $this->belongsTo('App\Category');
}
我在数据库
中的category_id
表中有一个名为subcategory
的外键列
这就是我试图获取控制器中所选类别的所有子类别的方法
$subcategory = Category::all();
和我的刀片视图
<ul>
@foreach($categories as $categories)
<li class='has-sub'><a href='#'>{{ $categories->category_name }}</a>
<ul>
@foreach($subcategory->subCategory() as $sub)
<li><a href='#'>{{ $sub->subcategory_name }}</a></li>
@endforeach
</ul>
</li>
@endforeach
</ul>
我现在能够获得所有类别名称,但我无法获得该类别的子类别名称。我在这里缺少什么?
答案 0 :(得分:1)
您的模型很好,我会修改控制器并查看以下内容:
在您的控制器中
$categories = Category::with('subCategory')->get();
现在,在这种情况下,您的类别将急切加载您的子类别。在您的示例中,您在foreach循环中进行查询,这是无效的。
在您的视图中
<ul>
@foreach($categories as $category)
<li class='has-sub'><a href='#'>{{ $category->category_name }}</a>
<ul>
@foreach($category->subCategory as $sub)
<li><a href='#'>{{ $sub->subcategory_name }}</a></li>
@endforeach
</ul>
</li>
@endforeach
</ul>
注意变量名称,如注释中提到的@ aldrin27! ($ categories - &gt; $ category)
更多调整
您可以将一个模型用于类别和子类别:
function subCategory() {
return $this->hasMany('App\Category', 'category_id');
}