Bladeren bron

Add column selection

Maurits van der Schee 10 jaren geleden
bovenliggende
commit
d97afeb2be
2 gewijzigde bestanden met toevoegingen van 29 en 7 verwijderingen
  1. 16
    0
      README.md
  2. 13
    7
      api.php

+ 16
- 0
README.md Bestand weergeven

@@ -143,6 +143,22 @@ Output:
143 143
 {"categories":{"columns":["id","name"],"records":[["1","Internet"]]}}
144 144
 ```
145 145
 
146
+### List + Column selection
147
+
148
+By default all columns are selected. With the "columns" parameter you can select specific columns (comma seperated):
149
+
150
+```
151
+GET http://localhost/api.php/categories?columns=name
152
+```
153
+
154
+Output:
155
+
156
+```
157
+{"categories":{"columns":["name"],"records":[["Web development"],["Internet"]]}}
158
+```
159
+
160
+NB: Column selection cannot be applied to related tables. 
161
+
146 162
 ### List + Order
147 163
 
148 164
 With the "order" parameter you can sort. By default the sort is in ascending order, but by specifying "desc" this can be reversed:

+ 13
- 7
api.php Bestand weergeven

@@ -457,17 +457,17 @@ class REST_CRUD_API {
457 457
 		$callback  = $this->parseGetParameter($get, 'callback', 'a-zA-Z0-9\-_', false);
458 458
 		$page      = $this->parseGetParameter($get, 'page', '0-9,', false);
459 459
 		$filters   = $this->parseGetParameterArray($get, 'filter', false, false);
460
+		$columns   = $this->parseGetParameter($get, 'columns', 'a-zA-Z0-9\-_,', false);
460 461
 		$order     = $this->parseGetParameter($get, 'order', 'a-zA-Z0-9\-_*,', false);
461 462
 		$transform = $this->parseGetParameter($get, 'transform', '1', false);
462
-
463
+		
463 464
 		$table    = $this->processTableParameter($database,$table,$db);
464 465
 		$key      = $this->processKeyParameter($key,$table,$database,$db);
465
-		foreach ($filters as &$filter) {
466
-			$filter   = $this->processFilterParameter($filter,$db);
467
-		}
466
+		foreach ($filters as &$filter) $filter = $this->processFilterParameter($filter,$db);
467
+		if ($columns) $columns = explode(',',$columns);
468 468
 		$page     = $this->processPageParameter($page);
469 469
 		$order    = $this->processOrderParameter($order,$table,$database,$db);
470
-
470
+		
471 471
 		$table  = $this->applyPermissions($database,$table,$action,$permissions,$multidb);
472 472
 		if (empty($table)) $this->exitWith404('entity');
473 473
 		
@@ -476,7 +476,7 @@ class REST_CRUD_API {
476 476
 
477 477
 		list($collect,$select) = $this->findRelations($table,$database,$db);
478 478
 
479
-		return compact('action','database','table','key','callback','page','filters','order','transform','db','object','input','collect','select');
479
+		return compact('action','database','table','key','callback','page','filters','columns','order','transform','db','object','input','collect','select');
480 480
 	}
481 481
 
482 482
 	protected function listCommand($parameters) {
@@ -508,7 +508,13 @@ class REST_CRUD_API {
508 508
 			}
509 509
 		}
510 510
 		$params = array();
511
-		$sql = 'SELECT * FROM "!"';
511
+		$sql = 'SELECT ';
512
+		if (is_array($columns)) {
513
+			$sql .= '"'.implode('","',$columns).'"';
514
+		} else {
515
+			$sql .= '*';
516
+		}
517
+		$sql .= ' FROM "!"';
512 518
 		$params[] = $table;
513 519
 		foreach ($filters as $i=>$filter) {
514 520
 			if (is_array($filter)) {

Loading…
Annuleren
Opslaan