Вы можете создать 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;
преимущество этого метода в том, что вам не нужно иметь 2 отдельные таблицы,один для category
и один для sub-categories
или 2 модели, только один стол, одна модель