我有一个Mysql表
这是我的模特
namespace App;
use Illuminate\Database\Eloquent\Model;
class Categories extends Model {
protected $table = 'category';
protected $fillable = ['category_name', 'parent_id', 'category_level', 'last_level', 'description', 'category_image'];
protected $guarded = ['id'];
public function parent()
{
return $this->belongsTo('App\Categories', 'parent_id');
}
public function children() {
return $this->hasMany('App\Categories','parent_id');
}
}
这是我的控制器方法
public function create() {
$parentCategory = Categories::all();
return view('admin.add_category')->with('parentCategory', $parentCategory);
}
我想得到这个结果
怎么可能?
修改
这是我的观点:
<select name="category_id" id="p_category_id" class="form-control">
<option selected="selected" value="">Select Cateory</option>
<option selected="" value="">Category</option>
@foreach ($parentCategory as $category)
@foreach ($category->children as $child)
<option value="{{ $category->id }}" placeholder="choose parent category">{{ $child->category_name }}</option>
@endforeach
@endforeach
</select>
我想要这个结果:
Category
Bangladesg
----Dhaka
---------Mirpur
---------------Senpara
---------Mohammadpur
----Rangpur
答案 0 :(得分:0)
您必须创建自定义方法才能实现此目的。因为你要做的是列出所有孩子和孩子的孩子等等。这不适用于1个foreach循环(或者,不是像你现在这样的foreach循环)。你可以在foreach循环中硬化foreach循环,但那是丑陋的代码然后你硬编码最高级别的类别。
您必须创建的方法应该是一种自引用方法,这样您就可以拥有任意数量的子类别。
也许您应该尝试一些为您完成工作并且易于实施的软件包:
或