jqh 5 anos atrás
pai
commit
a5835bcd1c
2 arquivos alterados com 16 adições e 7 exclusões
  1. 10 5
      src/Models/Menu.php
  2. 6 2
      src/Traits/ModelTree.php

+ 10 - 5
src/Models/Menu.php

@@ -18,9 +18,10 @@ use Illuminate\Support\Facades\DB;
  */
 class Menu extends Model
 {
-    use MenuCache, ModelTree {
-        ModelTree::boot as treeBoot;
-    }
+    use MenuCache,
+        ModelTree {
+            ModelTree::boot as treeBoot;
+        }
 
     /**
      * The attributes that are mass assignable.
@@ -92,7 +93,7 @@ class Menu extends Model
         $connection = config('admin.database.connection') ?: config('database.default');
         $orderColumn = DB::connection($connection)->getQueryGrammar()->wrap($this->orderColumn);
 
-        $byOrder = $orderColumn.' = 0,'.$orderColumn;
+        $byOrder = 'ROOT ASC, '.$orderColumn;
 
         $self = new static;
         if ($this->queryCallback instanceof \Closure) {
@@ -103,7 +104,11 @@ class Menu extends Model
             $self = $self->with('permissions');
         }
 
-        return $self->with('roles')->orderByRaw($byOrder)->get()->toArray();
+        return $self->with('roles')
+            ->selectRaw('*, '.$orderColumn.' ROOT')
+            ->orderByRaw($byOrder)
+            ->get()
+            ->toArray();
     }
 
     /**

+ 6 - 2
src/Traits/ModelTree.php

@@ -155,7 +155,7 @@ trait ModelTree
     public function allNodes()
     {
         $orderColumn = DB::getQueryGrammar()->wrap($this->orderColumn);
-        $byOrder = $orderColumn.' = 0,'.$orderColumn;
+        $byOrder = 'ROOT ASC, '.$orderColumn;
 
         $self = new static();
 
@@ -163,7 +163,11 @@ trait ModelTree
             $self = call_user_func($this->queryCallback, $self);
         }
 
-        return $self->orderByRaw($byOrder)->get()->toArray();
+        return $self->selectRaw('*, '.$orderColumn.' ROOT')
+            ->orderByRaw($byOrder)
+            ->get()
+            ->toArray();
+
     }
 
     /**