@@ -10,6 +10,14 @@ trait SortOrderTrait
1010
1111 public $ sortOrderDesc = 'descend ' ;
1212
13+ public function getSortOrderAsc () {
14+ return $ this ->sortOrderAsc ;
15+ }
16+
17+ public function getSortOrderDesc () {
18+ return $ this ->sortOrderDesc ;
19+ }
20+
1321 /**
1422 * 排序
1523 *
@@ -22,7 +30,7 @@ public function scopeSortOrder($query, $sort)
2230 {
2331 $ sort = array_wrap ($ sort );
2432
25- $ sortable = $ this ->getSortable ();
33+ $ sortable = $ this ->parseSortable ();
2634 if (!empty ($ sort )) {
2735 $ column = array_get ($ sort , 'column ' );
2836 if (array_get ($ sort , 'order ' )) {
@@ -36,7 +44,7 @@ public function scopeSortOrder($query, $sort)
3644 }
3745 } else {
3846 $ column = head (array_keys ($ sortable ));
39- $ order = $ this ->formatSort (array_get ($ sortable , $ column , $ this ->sortOrderAsc ));
47+ $ order = $ this ->formatSort (array_get ($ sortable , $ column , $ this ->getSortOrderAsc () ));
4048
4149 $ query ->orderBy ($ column , $ order );
4250 }
@@ -46,16 +54,22 @@ public function scopeSortOrder($query, $sort)
4654
4755 public function getSortable ()
4856 {
49- if (empty ($ this ->sortable )) {
50- return [$ this ->getKeyName () => $ this ->sortOrderDesc ];
57+ return [
58+ ];
59+ }
60+
61+ public function parseSortable ()
62+ {
63+ if (empty ($ this ->getSortable ())) {
64+ return [$ this ->getKeyName () => $ this ->getSortOrderDesc ()];
5165 }
5266
5367 $ sortable = [];
54- foreach ($ this ->sortable as $ key => $ value ) {
68+ foreach ($ this ->getSortable () as $ key => $ value ) {
5569 if (is_int ($ key )) {
56- $ sortable [$ value ] = $ this ->sortOrderDesc ;
70+ $ sortable [$ value ] = $ this ->getSortOrderDesc () ;
5771 } else {
58- $ sortable [$ key ] = ($ value == $ this ->sortOrderAsc ? $ this ->sortOrderAsc : $ this ->sortOrderDesc );
72+ $ sortable [$ key ] = ($ value == $ this ->getSortOrderAsc () ? $ this ->getSortOrderAsc () : $ this ->getSortOrderDesc () );
5973 }
6074 }
6175
@@ -66,13 +80,13 @@ public function setSortable($column, $order)
6680 {
6781 $ sortable = [];
6882 if (is_string ($ column )) {
69- $ sortable [$ column ] = ($ order == $ this ->sortOrderAsc ? $ this ->sortOrderAsc : $ this ->sortOrderDesc );
83+ $ sortable [$ column ] = ($ order == $ this ->getSortOrderAsc () ? $ this ->getSortOrderAsc () : $ this ->getSortOrderDesc () );
7084 } else if (is_array ($ column )) {
7185 foreach ($ column as $ key => $ value ) {
7286 if (is_int ($ key )) {
73- $ sortable [$ value ] = $ this ->sortOrderDesc ;
87+ $ sortable [$ value ] = $ this ->getSortOrderDesc () ;
7488 } else {
75- $ sortable [$ key ] = ($ value == $ this ->sortOrderAsc ? $ this ->sortOrderAsc : $ this ->sortOrderDesc );
89+ $ sortable [$ key ] = ($ value == $ this ->getSortOrderAsc () ? $ this ->getSortOrderAsc () : $ this ->getSortOrderDesc () );
7690 }
7791 }
7892 }
@@ -85,25 +99,25 @@ public function addSortable($column, $order)
8599 {
86100 $ sortable = [];
87101 if (is_string ($ column )) {
88- $ sortable [$ column ] = ($ order == $ this ->sortOrderAsc ? $ this ->sortOrderAsc : $ this ->sortOrderDesc );
102+ $ sortable [$ column ] = ($ order == $ this ->getSortOrderAsc () ? $ this ->getSortOrderAsc () : $ this ->getSortOrderDesc () );
89103 } else if (is_array ($ column )) {
90104 foreach ($ column as $ key => $ value ) {
91105 if (is_int ($ key )) {
92- $ sortable [$ value ] = $ this ->sortOrderDesc ;
106+ $ sortable [$ value ] = $ this ->getSortOrderDesc () ;
93107 } else {
94- $ sortable [$ key ] = ($ value == $ this ->sortOrderAsc ? $ this ->sortOrderAsc : $ this ->sortOrderDesc );
108+ $ sortable [$ key ] = ($ value == $ this ->getSortOrderAsc () ? $ this ->getSortOrderAsc () : $ this ->getSortOrderDesc () );
95109 }
96110 }
97111 }
98112
99- $ this ->sortable = array_merge ($ this ->sortable , $ sortable );
113+ $ this ->sortable = array_merge ($ this ->getSortable () , $ sortable );
100114
101115 return $ this ;
102116 }
103117
104118 private function formatSort ($ sort )
105119 {
106- if ($ sort == $ this ->sortOrderAsc ) {
120+ if ($ sort == $ this ->getSortOrderAsc () ) {
107121 return 'asc ' ;
108122 }
109123
0 commit comments