From 05af64a42d864c60feb93581d4979ddd60f14a6a Mon Sep 17 00:00:00 2001 From: vinnydude Date: Wed, 27 Mar 2024 16:27:55 +0000 Subject: [PATCH] Update EloquentTreeRepository.php Added a check to the save method so that only entries that have changed are saved. This will help speed up reordering large trees --- src/Model/EloquentTreeRepository.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Model/EloquentTreeRepository.php b/src/Model/EloquentTreeRepository.php index 21bc49f59..5a6eac622 100644 --- a/src/Model/EloquentTreeRepository.php +++ b/src/Model/EloquentTreeRepository.php @@ -101,9 +101,12 @@ public function save(TreeBuilder $builder, array $items = [], $parent = null) /* @var EloquentModel $entry */ $entry = $model->find($item['id']); - $entry->{$builder->getTreeOption('sort_column', 'sort_order')} = $index + 1; - $entry->{$builder->getTreeOption('parent_column', 'parent_id')} = $parent; - $entry->save(); + + if ($entry->sort_order != $index + 1 || $entry->parent_id != $parent) { + $entry->{$builder->getTreeOption('sort_column', 'sort_order')} = $index + 1; + $entry->{$builder->getTreeOption('parent_column', 'parent_id')} = $parent; + $entry->save(); + } if (isset($item['children'])) { $this->save($builder, $item['children'], $item['id']);