我有一个带有is_parent作为其外键链接的类别表,该表的类别ID在同一表中。现在我要创建关系类别hasMany子类别,并且该子类别属于一个类别。 这样我才能雄辩地访问。我怎么做?
这是我的表结构:
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('category_name');
$table->text('category_description')->nullabale();
$table->string('category_image');
$table->boolean('category_status');
$table->integer('user_id')->unsigned();
$table->boolean('is_parent');
$table->timestamps();
$table->index('user_id');
$table->foreign('user_id')->references('id')->on('users');
});
答案 0 :(得分:0)
您可以为同一张桌子创建2个模型,但您无需这样做。
这是您如何处理父>子关系:
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->integer('parent_id')->unsigned()->nullable()->default(null);
...
});
对于模型内容:
class Category extends Model{
...
public function parent(){
return $this->belongsTo('App\Category','parent_id');
}
public function children(){
return $this->hasMany('App\Category','parent_id');
}
}
现在可以访问类别的子项:
$category = App\Category::find(1);
$subCategories = $category->children;
此方法的优点是您不需要两个单独的表,一个用于category
,一个用于sub-categories
,或两个模型,只需一个表,一个模型< / p>