1313trait Where
1414{
1515
16+ protected $ allowOperator ;
1617 /**
1718 * @var array
1819 */
1920 private $ storageWhere = [];
2021
21- protected $ allowOperator ;
22-
2322 /**
2423 * @param array ...$fields
2524 *
@@ -123,40 +122,24 @@ protected function buildWhereOne(...$args)
123122 return implode (' ' , $ list );
124123 }
125124
126- /**
127- * @param array $storage
128- * @param string $toStorage
129- */
130- protected function buildIf2String (array $ storage , &$ toStorage )
125+ protected function buildWhere ($ storage )
131126 {
132- $ toStorage .= '( ' ;
133- $ lastOperator = '' ;
127+ /**
128+ * @var array $where
129+ */
130+ $ where = $ this ->buildWhereOperator ($ storage );
134131
135- foreach ($ storage as $ key => $ value )
132+ // fixme: $where = [$where];
133+ if (!is_array ($ where [0 ]))
136134 {
137- if (is_string ($ value [0 ]))
138- {
139- $ this ->allowOperator = true ;
140- $ lastOperator = $ value [0 ];
141- if ($ key )
142- {
143- $ toStorage .= ' ' . $ lastOperator . ' ' ;
144- }
145-
146- $ toStorage .= ' ( ' . $ value [1 ] . ') ' ;
147- }
148- else
149- {
150- if ($ this ->allowOperator )
151- {
152- $ toStorage .= ' ' . $ lastOperator . ' ' ;
153- }
154-
155- $ this ->buildIf2String ($ value , $ toStorage );
156- }
135+ $ where = [$ where ];
157136 }
158137
159- $ toStorage .= ') ' ;
138+ $ sql = '' ;
139+ $ this ->allowOperator = false ;
140+ $ this ->buildIf2String ($ where , $ sql );
141+
142+ return $ sql ;
160143 }
161144
162145 /**
@@ -195,24 +178,40 @@ protected function buildWhereOperator(array $args, $defaultOperator = 'AND')
195178 return $ storage ;
196179 }
197180
198- protected function buildWhere ($ storage )
181+ /**
182+ * @param array $storage
183+ * @param string $toStorage
184+ */
185+ protected function buildIf2String (array $ storage , &$ toStorage )
199186 {
200- /**
201- * @var array $where
202- */
203- $ where = $ this ->buildWhereOperator ($ storage );
187+ $ toStorage .= '( ' ;
188+ $ lastOperator = '' ;
204189
205- // fixme: $where = [$where];
206- if (!is_array ($ where [0 ]))
190+ foreach ($ storage as $ key => $ value )
207191 {
208- $ where = [$ where ];
209- }
192+ if (is_string ($ value [0 ]))
193+ {
194+ $ this ->allowOperator = true ;
195+ $ lastOperator = $ value [0 ];
196+ if ($ key )
197+ {
198+ $ toStorage .= ' ' . $ lastOperator . ' ' ;
199+ }
210200
211- $ sql = '' ;
212- $ this ->allowOperator = false ;
213- $ this ->buildIf2String ($ where , $ sql );
201+ $ toStorage .= ' ( ' . $ value [1 ] . ') ' ;
202+ }
203+ else
204+ {
205+ if ($ this ->allowOperator )
206+ {
207+ $ toStorage .= ' ' . $ lastOperator . ' ' ;
208+ }
214209
215- return $ sql ;
210+ $ this ->buildIf2String ($ value , $ toStorage );
211+ }
212+ }
213+
214+ $ toStorage .= ') ' ;
216215 }
217216
218217}
0 commit comments