Вдруг кому пригодится.
Чтобы заработал Sortable трейт, в уже существующей структуре данных. В миграцию, в которой описывает добавление sort_order к таблице, пишем такой код
$locales = Locale::all();
foreach($locales as $locale) {
$locale->sort_order = $locale->id;
$locale->save();
}
Вместо Locale используете свою модель, для которой sort_order добавляли.
Если вам необходимо конвертировать SimpleTree в NestedTree и данные уже существуют, вам надо добавить через миграцию и заполнить поля nest_left, nest_right, nest_depth. Я прилично потратил времени пока нашел решение и у меня получился такой скрипт.
use Author\Plugin\Models\Category;
function saveChilds($category) {
$category
->children()
->get()
->each(static function (Category $c) {
$c->setDefaultLeftAndRight();
$c->save();
saveChilds($c);
});
};
try {
$categories = Category::query()
->whereNull('parent_id')
->orderBy('id')
->get();
$categories->each(static function (Category $category) {
$category->setDefaultLeftAndRight();
$category->save();
saveChilds($category);
});
dd($categories->count());
} catch (\Exception $e) {
dd($e->getCode(), $e->getMessage(), $e);
}