3
3
4
4
use Closure , Schema , DB ;
5
5
6
+ use Illuminate \Http \Request ;
7
+
6
8
use Illuminate \Database \Eloquent \Model ;
7
9
use Illuminate \Database \Eloquent \Builder ;
8
10
9
- use Reposilib \Query ;
11
+ use Reposilib \Http \ UriParser ;
10
12
/**
11
- * Repository base class,we use Dependency Injection to in inject an Query instance.
13
+ * Repository base class,we use Dependency Injection to inject an Request instance.
12
14
* We can bulid our query like this '&filters[username][like]=abc&filters[gender][equal]=1' in Get request
13
15
*
14
16
* @author guosheng <guosheng1987@126.com>
17
19
class Repository {
18
20
19
21
/*
20
- * Query instance
22
+ * UriParser instance
21
23
*/
22
- protected $ query ;
24
+ protected $ uriParser ;
23
25
24
26
/**
25
- * Create a new repository instance.
27
+ * construct, make a new UriParser instance and set it.
26
28
*
27
- * @param Query $query
29
+ * @param Illuminate\Http\Request $request
28
30
* @return void
29
31
*/
30
- public function __construct (Query $ query )
32
+ public function __construct (Request $ request )
31
33
{
32
- $ this ->query = $ query ;
34
+ $ this ->uriParser = new UriParser ( $ request ) ;
33
35
}
34
36
35
37
/**
36
- * Create a new repository instance .
38
+ * Get table columns from Query Builder .
37
39
*
38
40
* @param Illuminate\Database\Eloquent\Builder $builder
39
41
*
@@ -65,10 +67,10 @@ private function _getColumns(Builder $builder)
65
67
}
66
68
67
69
/**
68
- * After Filters was converted to Where condition,Binding it to Query Builder
70
+ * After Filters was converted to where constraint,Attaching it to Query Builder
69
71
*
70
72
* @param Array $filters
71
- * @param Builder $builder
73
+ * @param Illuminate\Database\Eloquent\ Builder $builder
72
74
* @param Array $columns
73
75
*
74
76
* @return Array $filters converted
@@ -101,14 +103,13 @@ private function _doFilter($filters, Builder $builder, $columns = [])
101
103
}
102
104
103
105
/**
104
- * 给Builder绑定order by 条件
105
- * 注意:参数的值为空字符串,则会忽略该条件
106
+ * After Orders was converted to order constraint,Attaching it to Query Builder
106
107
*
107
108
* @param Array $orders
108
- * @param Builder $builder
109
+ * @param Illuminate\Database\Eloquent\ Builder $builder
109
110
* @param Array $columns
110
111
*
111
- * @return array 返回筛选(搜索)的参数
112
+ * @return array $orders
112
113
*/
113
114
114
115
private function _doOrder ($ orders , Builder $ builder , $ columns = [])
@@ -136,10 +137,10 @@ public function getPaginate(Builder $builder, array $columns = ['*'], array $ext
136
137
{
137
138
$ tables_columns = $ this ->_getColumns ($ builder );
138
139
139
- $ filters = $ this ->_doFilter ($ this ->query ->filters , $ builder , $ tables_columns );
140
- $ orders = $ this ->_doOrder ($ this ->query ->orders , $ builder , $ tables_columns );
140
+ $ filters = $ this ->_doFilter ($ this ->uriParser ->filters , $ builder , $ tables_columns );
141
+ $ orders = $ this ->_doOrder ($ this ->uriParser ->orders , $ builder , $ tables_columns );
141
142
142
- $ paginate = $ builder ->paginate ($ this ->query ->pagesize , $ columns , 'page ' , $ this ->query ->page );
143
+ $ paginate = $ builder ->paginate ($ this ->uriParser ->pagesize , $ columns , 'page ' , $ this ->uriParser ->page );
143
144
144
145
$ query = compact ('filters ' ) + $ extra_query ;
145
146
array_walk ($ query , function ($ v , $ k ) use ($ paginate ) {
@@ -152,7 +153,7 @@ public function getPaginate(Builder $builder, array $columns = ['*'], array $ext
152
153
}
153
154
154
155
/**
155
- * Convert Paginate object to Array,see ` getPaginate`
156
+ * Convert Paginate object to Array,see ' getPaginate'
156
157
*
157
158
* @param Illuminate\Database\Eloquent\Builder $builder
158
159
* @param Array $columns
@@ -186,7 +187,7 @@ public function getCount(Builder $builder, $enable_filters = TRUE)
186
187
{
187
188
$ tables_columns = $ this ->_getColumns ($ builder );
188
189
189
- $ this ->_doFilter ($ this ->query ->filters , $ _b , $ tables_columns );
190
+ $ this ->_doFilter ($ this ->uriParser ->filters , $ _b , $ tables_columns );
190
191
}
191
192
$ query = $ _b ->getQuery ();
192
193
if (!empty ($ query ->groups )) //group by
0 commit comments