Przeglądaj źródła

修复表格排序功能无法兼容Grid\Model::latest以及oldest方法问题

jqh 4 lat temu
rodzic
commit
c3c4ebd5b1
2 zmienionych plików z 15 dodań i 2 usunięć
  1. 13 0
      src/Grid/Model.php
  2. 2 2
      src/Repositories/EloquentRepository.php

+ 13 - 0
src/Grid/Model.php

@@ -649,6 +649,19 @@ class Model
         return $this;
     }
 
+    public function getSortQueries()
+    {
+        return $this->findQueryByMethod('orderBy')
+            ->merge($this->findQueryByMethod('orderByDesc'))
+            ->merge($this->findQueryByMethod('latest'))
+            ->merge($this->findQueryByMethod('oldest'));
+    }
+
+    public function getSortDescMethods()
+    {
+        return ['orderByDesc', 'latest'];
+    }
+
     /**
      * Set the relationships that should be eager loaded.
      *

+ 2 - 2
src/Repositories/EloquentRepository.php

@@ -192,13 +192,13 @@ class EloquentRepository extends Repository implements TreeRepository
         [$column, $type, $cast] = $model->getSort();
 
         if (empty($column) || empty($type)) {
-            $orders = $model->findQueryByMethod('orderBy')->merge($model->findQueryByMethod('orderByDesc'));
+            $orders = $model->getSortQueries();
 
             $model->resetOrderBy();
 
             $orders->each(function ($orderBy) use ($model) {
                 $column = $orderBy['arguments'][0];
-                $type = $orderBy['method'] === 'orderByDesc' ? 'desc' : ($orderBy['arguments'][1] ?? 'asc');
+                $type = in_array($orderBy['method'], $model->getSortDescMethods(), true) ? 'desc' : ($orderBy['arguments'][1] ?? 'asc');
                 $cast = null;
 
                 $this->addOrderBy($model, $column, $type, $cast);