3 namespace Drupal\database_test\Controller;
5 use Symfony\Component\HttpFoundation\JsonResponse;
8 * Controller routines for database_test routes.
10 class DatabaseTestController {
13 * Runs db_query_temporary() and outputs the table name and its number of rows.
15 * We need to test that the table created is temporary, so we run it here, in a
16 * separate menu callback request; After this request is done, the temporary
17 * table should automatically dropped.
19 * @return \Symfony\Component\HttpFoundation\JsonResponse
21 public function dbQueryTemporary() {
22 $table_name = db_query_temporary('SELECT age FROM {test}', []);
23 return new JsonResponse([
24 'table_name' => $table_name,
25 'row_count' => db_select($table_name)->countQuery()->execute()->fetchField(),
30 * Runs a pager query and returns the results.
32 * This function does care about the page GET parameter, as set by the
33 * simpletest HTTP call.
35 * @return \Symfony\Component\HttpFoundation\JsonResponse
37 public function pagerQueryEven($limit) {
38 $query = db_select('test', 't');
40 ->fields('t', ['name'])
43 // This should result in 2 pages of results.
45 ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
48 $names = $query->execute()->fetchCol();
50 return new JsonResponse([
56 * Runs a pager query and returns the results.
58 * This function does care about the page GET parameter, as set by the
59 * simpletest HTTP call.
61 * @return \Symfony\Component\HttpFoundation\JsonResponse
63 public function pagerQueryOdd($limit) {
64 $query = db_select('test_task', 't');
66 ->fields('t', ['task'])
69 // This should result in 4 pages of results.
71 ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
74 $names = $query->execute()->fetchCol();
76 return new JsonResponse([
82 * Runs a tablesort query and returns the results.
84 * This function does care about the page GET parameter, as set by the
85 * simpletest HTTP call.
87 * @return \Symfony\Component\HttpFoundation\JsonResponse
89 public function testTablesort() {
91 'tid' => ['data' => t('Task ID'), 'field' => 'tid', 'sort' => 'desc'],
92 'pid' => ['data' => t('Person ID'), 'field' => 'pid'],
93 'task' => ['data' => t('Task'), 'field' => 'task'],
94 'priority' => ['data' => t('Priority'), 'field' => 'priority', ],
97 $query = db_select('test_task', 't');
99 ->fields('t', ['tid', 'pid', 'task', 'priority']);
102 ->extend('Drupal\Core\Database\Query\TableSortExtender')
103 ->orderByHeader($header);
105 // We need all the results at once to check the sort.
106 $tasks = $query->execute()->fetchAll();
108 return new JsonResponse([
114 * Runs a tablesort query with a second order_by after and returns the results.
116 * This function does care about the page GET parameter, as set by the
117 * simpletest HTTP call.
119 * @return \Symfony\Component\HttpFoundation\JsonResponse
121 public function testTablesortFirst() {
123 'tid' => ['data' => t('Task ID'), 'field' => 'tid', 'sort' => 'desc'],
124 'pid' => ['data' => t('Person ID'), 'field' => 'pid'],
125 'task' => ['data' => t('Task'), 'field' => 'task'],
126 'priority' => ['data' => t('Priority'), 'field' => 'priority', ],
129 $query = db_select('test_task', 't');
131 ->fields('t', ['tid', 'pid', 'task', 'priority']);
134 ->extend('Drupal\Core\Database\Query\TableSortExtender')
135 ->orderByHeader($header)
136 ->orderBy('priority');
138 // We need all the results at once to check the sort.
139 $tasks = $query->execute()->fetchAll();
141 return new JsonResponse([