Explorar o código

update ModelTree

update
jqh %!s(int64=5) %!d(string=hai) anos
pai
achega
3dfb4cf255
Modificáronse 2 ficheiros con 13 adicións e 22 borrados
  1. 12 16
      src/Models/Menu.php
  2. 1 6
      src/Traits/ModelTree.php

+ 12 - 16
src/Models/Menu.php

@@ -18,6 +18,7 @@ class Menu extends Model
 {
     use MenuCache,
         ModelTree {
+            allNodes as treeAllNodes;
             ModelTree::boot as treeBoot;
         }
 
@@ -68,6 +69,8 @@ class Menu extends Model
     }
 
     /**
+     * Get all elements.
+     *
      * @param bool $force
      *
      * @return array
@@ -84,26 +87,19 @@ class Menu extends Model
     }
 
     /**
+     * Fetch all elements.
+     *
      * @return array
      */
-    protected function fetchAll(): array
+    public function fetchAll(): array
     {
-        $connection = config('admin.database.connection') ?: config('database.default');
-        $orderColumn = DB::connection($connection)->getQueryGrammar()->wrap($this->getOrderColumn());
-
-        $byOrder = 'ROOT ASC, '.$orderColumn;
-
-        $self = $this->callQueryCallbacks(new static());
-
-        if (static::withPermission()) {
-            $self = $self->with('permissions');
-        }
+        return $this->withQuery(function ($query) {
+            if (static::withPermission()) {
+                $query = $query->with('permissions');
+            }
 
-        return $self->with('roles')
-            ->selectRaw('*, '.$orderColumn.' ROOT')
-            ->orderByRaw($byOrder)
-            ->get()
-            ->toArray();
+            return $query->with('roles');
+        })->treeAllNodes();
     }
 
     /**

+ 1 - 6
src/Traits/ModelTree.php

@@ -7,7 +7,6 @@ use Dcat\Admin\Tree;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Arr;
-use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Request;
 use Spatie\EloquentSortable\SortableTrait;
 
@@ -150,12 +149,8 @@ trait ModelTree
      */
     public function allNodes()
     {
-        $orderColumn = DB::getQueryGrammar()->wrap($this->getOrderColumn());
-        $byOrder = 'ROOT ASC, '.$orderColumn;
-
         return $this->callQueryCallbacks(new static())
-            ->selectRaw('*, '.$orderColumn.' ROOT')
-            ->orderByRaw($byOrder)
+            ->orderBy($this->getOrderColumn(), 'asc')
             ->get()
             ->toArray();
     }