|
1
|
|
|
<?php namespace Distilleries\Expendable\Models; |
|
2
|
|
|
|
|
3
|
|
|
use Illuminate\Database\Eloquent\Model; |
|
4
|
|
|
use \DB; |
|
5
|
|
|
use \Exception; |
|
6
|
|
|
use Illuminate\Support\Str; |
|
7
|
|
|
|
|
8
|
|
|
class BaseModel extends Model |
|
9
|
|
|
{ |
|
10
|
|
|
|
|
11
|
|
|
protected $reserves = [ |
|
12
|
|
|
'ACCESS', |
|
13
|
|
|
'ACCOUNT', |
|
14
|
|
|
'ACTIVATE', |
|
15
|
|
|
'ADD', |
|
16
|
|
|
'ADMIN', |
|
17
|
|
|
'ADVISE', |
|
18
|
|
|
'AFTER', |
|
19
|
|
|
'ALL', |
|
20
|
|
|
'ALL_ROWS', |
|
21
|
|
|
'ALLOCATE', |
|
22
|
|
|
'ALTER', |
|
23
|
|
|
'ANALYZE', |
|
24
|
|
|
'AND', |
|
25
|
|
|
'ANY', |
|
26
|
|
|
'ARCHIVE', |
|
27
|
|
|
'ARCHIVELOG', |
|
28
|
|
|
'ARRAY', |
|
29
|
|
|
'AS', |
|
30
|
|
|
'ASC', |
|
31
|
|
|
'AT', |
|
32
|
|
|
'AUDIT', |
|
33
|
|
|
'AUTHENTICATED', |
|
34
|
|
|
'AUTHORIZATION', |
|
35
|
|
|
'AUTOEXTEND', |
|
36
|
|
|
'AUTOMATIC', |
|
37
|
|
|
'BACKUP', |
|
38
|
|
|
'BECOME', |
|
39
|
|
|
'BEFORE', |
|
40
|
|
|
'BEGIN', |
|
41
|
|
|
'BETWEEN', |
|
42
|
|
|
'BFILE', |
|
43
|
|
|
'BITMAP', |
|
44
|
|
|
'BLOB', |
|
45
|
|
|
'BLOCK', |
|
46
|
|
|
'BODY', |
|
47
|
|
|
'BY', |
|
48
|
|
|
'CACHE', |
|
49
|
|
|
'CACHE_INSTANCES', |
|
50
|
|
|
'CANCEL', |
|
51
|
|
|
'CASCADE', |
|
52
|
|
|
'CAST', |
|
53
|
|
|
'CFILE', |
|
54
|
|
|
'CHAINED', |
|
55
|
|
|
'CHANGE', |
|
56
|
|
|
'CHAR', |
|
57
|
|
|
'CHAR_CS', |
|
58
|
|
|
'CHARACTER', |
|
59
|
|
|
'CHECK', |
|
60
|
|
|
'CHECKPOINT', |
|
61
|
|
|
'CHOOSE', |
|
62
|
|
|
'CHUNK', |
|
63
|
|
|
'CLEAR', |
|
64
|
|
|
'CLOB', |
|
65
|
|
|
'CLONE', |
|
66
|
|
|
'CLOSE', |
|
67
|
|
|
'CLOSE_CACHED_OPEN_CURSORS', |
|
68
|
|
|
'CLUSTER', |
|
69
|
|
|
'COALESCE', |
|
70
|
|
|
'COLUMN', |
|
71
|
|
|
'COLUMNS', |
|
72
|
|
|
'COMMENT', |
|
73
|
|
|
'COMMIT', |
|
74
|
|
|
'COMMITTED', |
|
75
|
|
|
'COMPATIBILITY', |
|
76
|
|
|
'COMPILE', |
|
77
|
|
|
'COMPLETE', |
|
78
|
|
|
'COMPOSITE_LIMIT', |
|
79
|
|
|
'COMPRESS', |
|
80
|
|
|
'COMPUTE', |
|
81
|
|
|
'CONNECT', |
|
82
|
|
|
'CONNECT_TIME', |
|
83
|
|
|
'CONSTRAINT', |
|
84
|
|
|
'CONSTRAINTS', |
|
85
|
|
|
'CONTENTS', |
|
86
|
|
|
'CONTINUE', |
|
87
|
|
|
'CONTROLFILE', |
|
88
|
|
|
'CONVERT', |
|
89
|
|
|
'COST', |
|
90
|
|
|
'CPU_PER_CALL', |
|
91
|
|
|
'CPU_PER_SESSION', |
|
92
|
|
|
'CREATE', |
|
93
|
|
|
'CURRENT', |
|
94
|
|
|
'CURRENT_SCHEMA', |
|
95
|
|
|
'CURREN_USER', |
|
96
|
|
|
'CURSOR', |
|
97
|
|
|
'CYCLE', |
|
98
|
|
|
'DANGLING', |
|
99
|
|
|
'DATABASE', |
|
100
|
|
|
'DATAFILE', |
|
101
|
|
|
'DATAFILES', |
|
102
|
|
|
'DATAOBJNO', |
|
103
|
|
|
'DATE', |
|
104
|
|
|
'DBA', |
|
105
|
|
|
'DBHIGH', |
|
106
|
|
|
'DBLOW', |
|
107
|
|
|
'DBMAC', |
|
108
|
|
|
'DEALLOCATE', |
|
109
|
|
|
'DEBUG', |
|
110
|
|
|
'DEC', |
|
111
|
|
|
'DECIMAL', |
|
112
|
|
|
'DECLARE', |
|
113
|
|
|
'DEFAULT', |
|
114
|
|
|
'DEFERRABLE', |
|
115
|
|
|
'DEFERRED', |
|
116
|
|
|
'DEGREE', |
|
117
|
|
|
'DELETE', |
|
118
|
|
|
'DEREF', |
|
119
|
|
|
'DESC', |
|
120
|
|
|
'DIRECTORY', |
|
121
|
|
|
'DISABLE', |
|
122
|
|
|
'DISCONNECT', |
|
123
|
|
|
'DISMOUNT', |
|
124
|
|
|
'DISTINCT', |
|
125
|
|
|
'DISTRIBUTED', |
|
126
|
|
|
'DML', |
|
127
|
|
|
'DOUBLE', |
|
128
|
|
|
'DROP', |
|
129
|
|
|
'DUMP', |
|
130
|
|
|
'EACH', |
|
131
|
|
|
'ELSE', |
|
132
|
|
|
'ENABLE', |
|
133
|
|
|
'END', |
|
134
|
|
|
'ENFORCE', |
|
135
|
|
|
'ENTRY', |
|
136
|
|
|
'ESCAPE', |
|
137
|
|
|
'EXCEPT', |
|
138
|
|
|
'EXCEPTIONS', |
|
139
|
|
|
'EXCHANGE', |
|
140
|
|
|
'EXCLUDING', |
|
141
|
|
|
'EXCLUSIVE', |
|
142
|
|
|
'EXECUTE', |
|
143
|
|
|
'EXISTS', |
|
144
|
|
|
'EXPIRE', |
|
145
|
|
|
'EXPLAIN', |
|
146
|
|
|
'EXTENT', |
|
147
|
|
|
'EXTENTS', |
|
148
|
|
|
'EXTERNALLY', |
|
149
|
|
|
'FAILED_LOGIN_ATTEMPTS', |
|
150
|
|
|
'FALSE', |
|
151
|
|
|
'FAST', |
|
152
|
|
|
'FILE', |
|
153
|
|
|
'FIRST_ROWS', |
|
154
|
|
|
'FLAGGER', |
|
155
|
|
|
'FLOAT', |
|
156
|
|
|
'FLOB', |
|
157
|
|
|
'FLUSH', |
|
158
|
|
|
'FOR', |
|
159
|
|
|
'FORCE', |
|
160
|
|
|
'FOREIGN', |
|
161
|
|
|
'FREELIST', |
|
162
|
|
|
'FREELISTS', |
|
163
|
|
|
'FROM', |
|
164
|
|
|
'FULL', |
|
165
|
|
|
'FUNCTION', |
|
166
|
|
|
'GLOBAL', |
|
167
|
|
|
'GLOBALLY', |
|
168
|
|
|
'GLOBAL_NAME', |
|
169
|
|
|
'GRANT', |
|
170
|
|
|
'GROUP', |
|
171
|
|
|
'GROUPS', |
|
172
|
|
|
'HASH', |
|
173
|
|
|
'HASHKEYS', |
|
174
|
|
|
'HAVING', |
|
175
|
|
|
'HEADER', |
|
176
|
|
|
'HEAP', |
|
177
|
|
|
'IDENTIFIED', |
|
178
|
|
|
'IDGENERATORS', |
|
179
|
|
|
'IDLE_TIME', |
|
180
|
|
|
'IF', |
|
181
|
|
|
'IMMEDIATE', |
|
182
|
|
|
'IN', |
|
183
|
|
|
'INCLUDING', |
|
184
|
|
|
'INCREMENT', |
|
185
|
|
|
'INDEX', |
|
186
|
|
|
'INDEXED', |
|
187
|
|
|
'INDEXES', |
|
188
|
|
|
'INDICATOR', |
|
189
|
|
|
'IND_PARTITION', |
|
190
|
|
|
'INITIAL', |
|
191
|
|
|
'INITIALLY', |
|
192
|
|
|
'INITRANS', |
|
193
|
|
|
'INSERT', |
|
194
|
|
|
'INSTANCE', |
|
195
|
|
|
'INSTANCES', |
|
196
|
|
|
'INSTEAD', |
|
197
|
|
|
'INT', |
|
198
|
|
|
'INTEGER', |
|
199
|
|
|
'INTERMEDIATE', |
|
200
|
|
|
'INTERSECT', |
|
201
|
|
|
'INTO', |
|
202
|
|
|
'IS', |
|
203
|
|
|
'ISOLATION', |
|
204
|
|
|
'ISOLATION_LEVEL', |
|
205
|
|
|
'KEEP', |
|
206
|
|
|
'KEY', |
|
207
|
|
|
'KILL', |
|
208
|
|
|
'LABEL', |
|
209
|
|
|
'LAYER', |
|
210
|
|
|
'LESS', |
|
211
|
|
|
'LEVEL', |
|
212
|
|
|
'LIBRARY', |
|
213
|
|
|
'LIKE', |
|
214
|
|
|
'LIMIT', |
|
215
|
|
|
'LINK', |
|
216
|
|
|
'LIST', |
|
217
|
|
|
'LOB', |
|
218
|
|
|
'LOCAL', |
|
219
|
|
|
'LOCK', |
|
220
|
|
|
'LOCKED', |
|
221
|
|
|
'LOG', |
|
222
|
|
|
'LOGFILE', |
|
223
|
|
|
'LOGGING', |
|
224
|
|
|
'LOGICAL_READS_PER_CALL', |
|
225
|
|
|
'LOGICAL_READS_PER_SESSION', |
|
226
|
|
|
'LONG', |
|
227
|
|
|
'MANAGE', |
|
228
|
|
|
'MASTER', |
|
229
|
|
|
'MAX', |
|
230
|
|
|
'MAXARCHLOGS', |
|
231
|
|
|
'MAXDATAFILES', |
|
232
|
|
|
'MAXEXTENTS', |
|
233
|
|
|
'MAXINSTANCES', |
|
234
|
|
|
'MAXLOGFILES', |
|
235
|
|
|
'MAXLOGHISTORY', |
|
236
|
|
|
'MAXLOGMEMBERS', |
|
237
|
|
|
'MAXSIZE', |
|
238
|
|
|
'MAXTRANS', |
|
239
|
|
|
'MAXVALUE', |
|
240
|
|
|
'MIN', |
|
241
|
|
|
'MEMBER', |
|
242
|
|
|
'MINIMUM', |
|
243
|
|
|
'MINEXTENTS', |
|
244
|
|
|
'MINUS', |
|
245
|
|
|
'MINVALUE', |
|
246
|
|
|
'MLSLABEL', |
|
247
|
|
|
'MLS_LABEL_FORMAT', |
|
248
|
|
|
'MODE', |
|
249
|
|
|
'MODIFY', |
|
250
|
|
|
'MOUNT', |
|
251
|
|
|
'MOVE', |
|
252
|
|
|
'MTS_DISPATCHERS', |
|
253
|
|
|
'MULTISET', |
|
254
|
|
|
'NATIONAL', |
|
255
|
|
|
'NCHAR', |
|
256
|
|
|
'NCHAR_CS', |
|
257
|
|
|
'NCLOB', |
|
258
|
|
|
'NEEDED', |
|
259
|
|
|
'NESTED', |
|
260
|
|
|
'NETWORK', |
|
261
|
|
|
'NEW', |
|
262
|
|
|
'NEXT', |
|
263
|
|
|
'NOARCHIVELOG', |
|
264
|
|
|
'NOAUDIT', |
|
265
|
|
|
'NOCACHE', |
|
266
|
|
|
'NOCOMPRESS', |
|
267
|
|
|
'NOCYCLE', |
|
268
|
|
|
'NOFORCE', |
|
269
|
|
|
'NOLOGGING', |
|
270
|
|
|
'NOMAXVALUE', |
|
271
|
|
|
'NOMINVALUE', |
|
272
|
|
|
'NONE', |
|
273
|
|
|
'NOORDER', |
|
274
|
|
|
'NOOVERRIDE', |
|
275
|
|
|
'NOPARALLEL', |
|
276
|
|
|
'NOPARALLEL', |
|
277
|
|
|
'NOREVERSE', |
|
278
|
|
|
'NORMAL', |
|
279
|
|
|
'NOSORT', |
|
280
|
|
|
'NOT', |
|
281
|
|
|
'NOTHING', |
|
282
|
|
|
'NOWAIT', |
|
283
|
|
|
'NULL', |
|
284
|
|
|
'NUMBER', |
|
285
|
|
|
'NUMERIC', |
|
286
|
|
|
'NVARCHAR2', |
|
287
|
|
|
'OBJECT', |
|
288
|
|
|
'OBJNO', |
|
289
|
|
|
'OBJNO_REUSE', |
|
290
|
|
|
'OF', |
|
291
|
|
|
'OFF', |
|
292
|
|
|
'OFFLINE', |
|
293
|
|
|
'OID', |
|
294
|
|
|
'OIDINDEX', |
|
295
|
|
|
'OLD', |
|
296
|
|
|
'ON', |
|
297
|
|
|
'ONLINE', |
|
298
|
|
|
'ONLY', |
|
299
|
|
|
'OPCODE', |
|
300
|
|
|
'OPEN', |
|
301
|
|
|
'OPTIMAL', |
|
302
|
|
|
'OPTIMIZER_GOAL', |
|
303
|
|
|
'OPTION', |
|
304
|
|
|
'OR', |
|
305
|
|
|
'ORDER', |
|
306
|
|
|
'ORGANIZATION', |
|
307
|
|
|
'OSLABEL', |
|
308
|
|
|
'OVERFLOW', |
|
309
|
|
|
'OWN', |
|
310
|
|
|
'PACKAGE', |
|
311
|
|
|
'PARALLEL', |
|
312
|
|
|
'PARTITION', |
|
313
|
|
|
'PASSWORD', |
|
314
|
|
|
'PASSWORD_GRACE_TIME', |
|
315
|
|
|
'PASSWORD_LIFE_TIME', |
|
316
|
|
|
'PASSWORD_LOCK_TIME', |
|
317
|
|
|
'PASSWORD_REUSE_MAX', |
|
318
|
|
|
'PASSWORD_REUSE_TIME', |
|
319
|
|
|
'PASSWORD_VERIFY_FUNCTION', |
|
320
|
|
|
'PCTFREE', |
|
321
|
|
|
'PCTINCREASE', |
|
322
|
|
|
'PCTTHRESHOLD', |
|
323
|
|
|
'PCTUSED', |
|
324
|
|
|
'PCTVERSION', |
|
325
|
|
|
'PERCENT', |
|
326
|
|
|
'PERMANENT', |
|
327
|
|
|
'PLAN', |
|
328
|
|
|
'PLSQL_DEBUG', |
|
329
|
|
|
'POST_TRANSACTION', |
|
330
|
|
|
'PRECISION', |
|
331
|
|
|
'PRESERVE', |
|
332
|
|
|
'PRIMARY', |
|
333
|
|
|
'PRIOR', |
|
334
|
|
|
'PRIVATE', |
|
335
|
|
|
'PRIVATE_SGA', |
|
336
|
|
|
'PRIVILEGE', |
|
337
|
|
|
'PRIVILEGES', |
|
338
|
|
|
'PROCEDURE', |
|
339
|
|
|
'PROFILE', |
|
340
|
|
|
'PUBLIC', |
|
341
|
|
|
'PURGE', |
|
342
|
|
|
'QUEUE', |
|
343
|
|
|
'QUOTA', |
|
344
|
|
|
'RANGE', |
|
345
|
|
|
'RAW', |
|
346
|
|
|
'RBA', |
|
347
|
|
|
'READ', |
|
348
|
|
|
'READUP', |
|
349
|
|
|
'REAL', |
|
350
|
|
|
'REBUILD', |
|
351
|
|
|
'RECOVER', |
|
352
|
|
|
'RECOVERABLE', |
|
353
|
|
|
'RECOVERY', |
|
354
|
|
|
'REF', |
|
355
|
|
|
'REFERENCES', |
|
356
|
|
|
'REFERENCING', |
|
357
|
|
|
'REFRESH', |
|
358
|
|
|
'RENAME', |
|
359
|
|
|
'REPLACE', |
|
360
|
|
|
'RESET', |
|
361
|
|
|
'RESETLOGS', |
|
362
|
|
|
'RESIZE', |
|
363
|
|
|
'RESOURCE', |
|
364
|
|
|
'RESTRICTED', |
|
365
|
|
|
'RETURN', |
|
366
|
|
|
'RETURNING', |
|
367
|
|
|
'REUSE', |
|
368
|
|
|
'REVERSE', |
|
369
|
|
|
'REVOKE', |
|
370
|
|
|
'ROLE', |
|
371
|
|
|
// 'ROLES', |
|
372
|
|
|
'ROLLBACK', |
|
373
|
|
|
'ROW', |
|
374
|
|
|
'ROWID', |
|
375
|
|
|
'ROWNUM', |
|
376
|
|
|
'ROWS', |
|
377
|
|
|
'RULE', |
|
378
|
|
|
'SAMPLE', |
|
379
|
|
|
'SAVEPOINT', |
|
380
|
|
|
'SB4', |
|
381
|
|
|
'SCAN_INSTANCES', |
|
382
|
|
|
'SCHEMA', |
|
383
|
|
|
'SCN', |
|
384
|
|
|
'SCOPE', |
|
385
|
|
|
'SD_ALL', |
|
386
|
|
|
'SD_INHIBIT', |
|
387
|
|
|
'SD_SHOW', |
|
388
|
|
|
'SEGMENT', |
|
389
|
|
|
'SEG_BLOCK', |
|
390
|
|
|
'SEG_FILE', |
|
391
|
|
|
'SELECT', |
|
392
|
|
|
'SEQUENCE', |
|
393
|
|
|
'SERIALIZABLE', |
|
394
|
|
|
'SESSION', |
|
395
|
|
|
'SESSION_CACHED_CURSORS', |
|
396
|
|
|
'SESSIONS_PER_USER', |
|
397
|
|
|
'SET', |
|
398
|
|
|
'SHARE', |
|
399
|
|
|
'SHARED', |
|
400
|
|
|
'SHARED_POOL', |
|
401
|
|
|
'SHRINK', |
|
402
|
|
|
'SIZE', |
|
403
|
|
|
'SKIP', |
|
404
|
|
|
'SKIP_UNUSABLE_INDEXES', |
|
405
|
|
|
'SMALLINT', |
|
406
|
|
|
'SNAPSHOT', |
|
407
|
|
|
'SOME', |
|
408
|
|
|
'SORT', |
|
409
|
|
|
'SPECIFICATION', |
|
410
|
|
|
'SPLIT', |
|
411
|
|
|
'SQL_TRACE', |
|
412
|
|
|
'STANDBY', |
|
413
|
|
|
'START', |
|
414
|
|
|
'STATEMENT_ID', |
|
415
|
|
|
'STATISTICS', |
|
416
|
|
|
'STOP', |
|
417
|
|
|
'STORAGE', |
|
418
|
|
|
'STORE', |
|
419
|
|
|
'STRUCTURE', |
|
420
|
|
|
'SUCCESSFUL', |
|
421
|
|
|
'SWITCH', |
|
422
|
|
|
'SYS_OP_ENFORCE_NOT_NULL$', |
|
423
|
|
|
'SYS_OP_NTCIMG$', |
|
424
|
|
|
'SYNONYM', |
|
425
|
|
|
'SYSDATE', |
|
426
|
|
|
'SYSDBA', |
|
427
|
|
|
'SYSOPER', |
|
428
|
|
|
// 'SYSTEM', |
|
429
|
|
|
'TABLE', |
|
430
|
|
|
'TABLES', |
|
431
|
|
|
'TABLESPACE', |
|
432
|
|
|
'TABLESPACE_NO', |
|
433
|
|
|
'TABNO', |
|
434
|
|
|
'TEMPORARY', |
|
435
|
|
|
'THAN', |
|
436
|
|
|
'THE', |
|
437
|
|
|
'THEN', |
|
438
|
|
|
'THREAD', |
|
439
|
|
|
'TIMESTAMP', |
|
440
|
|
|
'TIME', |
|
441
|
|
|
'TO', |
|
442
|
|
|
'TOPLEVEL', |
|
443
|
|
|
'TRACE', |
|
444
|
|
|
'TRACING', |
|
445
|
|
|
'TRANSACTION', |
|
446
|
|
|
'TRANSITIONAL', |
|
447
|
|
|
'TRIGGER', |
|
448
|
|
|
'TRIGGERS', |
|
449
|
|
|
'TRUE', |
|
450
|
|
|
'TRUNCATE', |
|
451
|
|
|
'TX', |
|
452
|
|
|
// 'TYPE', |
|
453
|
|
|
'UB2', |
|
454
|
|
|
'UBA', |
|
455
|
|
|
'UID', |
|
456
|
|
|
'UNARCHIVED', |
|
457
|
|
|
'UNDO', |
|
458
|
|
|
'UNION', |
|
459
|
|
|
'UNIQUE', |
|
460
|
|
|
'UNLIMITED', |
|
461
|
|
|
'UNLOCK', |
|
462
|
|
|
'UNRECOVERABLE', |
|
463
|
|
|
'UNTIL', |
|
464
|
|
|
'UNUSABLE', |
|
465
|
|
|
'UNUSED', |
|
466
|
|
|
'UPDATABLE', |
|
467
|
|
|
'UPDATE', |
|
468
|
|
|
'USAGE', |
|
469
|
|
|
'USE', |
|
470
|
|
|
'USER', |
|
471
|
|
|
'USING', |
|
472
|
|
|
'VALIDATE', |
|
473
|
|
|
'VALIDATION', |
|
474
|
|
|
'VALUE', |
|
475
|
|
|
'VALUES', |
|
476
|
|
|
'VARCHAR', |
|
477
|
|
|
'VARCHAR2', |
|
478
|
|
|
'VARYING', |
|
479
|
|
|
'VIEW', |
|
480
|
|
|
'WHEN', |
|
481
|
|
|
'WHENEVER', |
|
482
|
|
|
'WHERE', |
|
483
|
|
|
'WITH', |
|
484
|
|
|
'WITHOUT', |
|
485
|
|
|
'WORK', |
|
486
|
|
|
'WRITE', |
|
487
|
|
|
'WRITEDOWN', |
|
488
|
|
|
'WRITEUP', |
|
489
|
|
|
'XID', |
|
490
|
|
|
'YEAR', |
|
491
|
|
|
'ZONE', |
|
492
|
|
|
]; |
|
493
|
|
|
|
|
494
|
|
|
/** |
|
495
|
|
|
* Check if value is an Oracle reserved word. |
|
496
|
|
|
* |
|
497
|
|
|
* @param string $value |
|
498
|
|
|
* @return bool |
|
499
|
|
|
*/ |
|
500
|
|
|
public function isReserved($value) |
|
501
|
|
|
{ |
|
502
|
|
|
return DB::connection()->getDriverName() == 'oracle' && in_array(Str::upper(trim($value)), $this->reserves, |
|
503
|
|
|
true); |
|
504
|
|
|
} |
|
505
|
|
|
|
|
506
|
|
|
|
|
507
|
28 |
|
public static function getChoice() |
|
508
|
|
|
{ |
|
509
|
|
|
|
|
510
|
28 |
|
$data = self::all(); |
|
511
|
28 |
|
$result = []; |
|
512
|
28 |
|
foreach ($data as $item) { |
|
513
|
28 |
|
$result[$item['id']] = isset($item['libelle']) ? $item['libelle'] : $item['id']; |
|
514
|
28 |
|
} |
|
515
|
|
|
|
|
516
|
28 |
|
return $result; |
|
517
|
|
|
} |
|
518
|
|
|
|
|
519
|
|
|
public function scopeSearch($query, $searchQuery) |
|
520
|
|
|
{ |
|
521
|
|
|
|
|
522
|
12 |
|
return $query->where(function ($query) use ($searchQuery) { |
|
523
|
12 |
|
$columns = $this->getAllColumnsNames(); |
|
524
|
|
|
|
|
525
|
|
|
foreach ($columns as $column) { |
|
526
|
|
|
$column = $this->isReserved($column) ? '"' . $column . '"' : $column; |
|
527
|
|
|
|
|
528
|
|
|
if ((DB::connection()->getDriverName()) == 'oracle') { |
|
529
|
|
|
$query->orWhereRaw('LOWER(' . $column . ') like ?', ['%' . strtolower($searchQuery) . '%']); |
|
530
|
|
|
} else { |
|
531
|
|
|
$query->orwhere($column, 'like', '%' . $searchQuery . '%'); |
|
532
|
|
|
} |
|
533
|
|
|
|
|
534
|
|
|
} |
|
535
|
12 |
|
}); |
|
536
|
|
|
} |
|
537
|
|
|
|
|
538
|
16 |
|
public function getAllColumnsNames() |
|
539
|
|
|
{ |
|
540
|
16 |
|
switch (DB::connection()->getDriverName()) { |
|
541
|
16 |
|
case 'pgsql': |
|
542
|
|
|
$query = "SELECT column_name FROM information_schema.columns WHERE table_name = '" . $this->getTable() . "'"; |
|
543
|
|
|
$column_name = 'column_name'; |
|
544
|
|
|
$reverse = true; |
|
545
|
|
|
break; |
|
546
|
|
|
|
|
547
|
16 |
|
case 'mysql': |
|
548
|
|
|
$query = 'SHOW COLUMNS FROM ' . $this->getTable(); |
|
549
|
|
|
$column_name = 'Field'; |
|
550
|
|
|
$reverse = false; |
|
551
|
|
|
break; |
|
552
|
|
|
|
|
553
|
16 |
|
case 'sqlsrv': |
|
554
|
|
|
$parts = explode('.', $this->getTable()); |
|
555
|
|
|
$num = (count($parts) - 1); |
|
556
|
|
|
$table = $parts[$num]; |
|
557
|
|
|
$query = "SELECT column_name FROM " . DB::connection()->getConfig('database') . ".INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'" . $table . "'"; |
|
558
|
|
|
$column_name = 'column_name'; |
|
559
|
|
|
$reverse = false; |
|
560
|
|
|
break; |
|
561
|
16 |
|
case 'oracle': |
|
562
|
|
|
$query = 'SELECT COLUMN_NAME from ALL_TAB_COLUMNS WHERE TABLE_NAME=\'' . strtoupper($this->getTable()) . '\' AND DATA_TYPE <> \'CLOB\' AND DATA_TYPE <> \'NUMBER\' AND DATA_TYPE <> \'TIMESTAMP\''; |
|
563
|
|
|
$column_name = 'column_name'; |
|
564
|
|
|
$reverse = false; |
|
565
|
|
|
break; |
|
566
|
16 |
|
default: |
|
567
|
16 |
|
$error = 'Database driver not supported: ' . DB::connection()->getConfig('driver'); |
|
568
|
16 |
|
throw new Exception($error); |
|
569
|
16 |
|
} |
|
570
|
|
|
|
|
571
|
|
|
$columns = []; |
|
572
|
|
|
|
|
573
|
|
|
foreach (DB::select($query) as $column) { |
|
574
|
|
|
$columns[] = $column->$column_name; |
|
575
|
|
|
} |
|
576
|
|
|
|
|
577
|
|
|
if ($reverse) { |
|
578
|
|
|
$columns = array_reverse($columns); |
|
579
|
|
|
} |
|
580
|
|
|
|
|
581
|
|
|
return $columns; |
|
582
|
|
|
} |
|
583
|
|
|
|
|
584
|
16 |
|
public function scopeBetweenCreate($query, $start, $end) |
|
585
|
|
|
{ |
|
586
|
16 |
|
return $query->whereBetween($this->getTable() . '.created_at', [$start, $end]); |
|
587
|
|
|
} |
|
588
|
|
|
|
|
589
|
8 |
|
public function scopeBetweenUpdate($query, $start, $end) |
|
590
|
|
|
{ |
|
591
|
8 |
|
return $query->whereBetween($this->getTable() . '.updated_at', [$start, $end]); |
|
592
|
|
|
} |
|
593
|
|
|
|
|
594
|
|
|
|
|
595
|
|
|
} |