123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- class SelectQuery_pgsql extends SelectQuery {
- public function orderRandom() {
- $alias = $this->addExpression('RANDOM()', 'random_field');
- $this->orderBy($alias);
- return $this;
- }
-
- public function orderBy($field, $direction = 'ASC') {
-
- $return = parent::orderBy($field, $direction);
-
- if (strpos($field, '.') !== FALSE) {
- list($table, $table_field) = explode('.', $field);
- }
-
- foreach ($this->fields as $existing_field) {
- if (!empty($table)) {
-
- if ($existing_field['table'] == $table && $existing_field['field'] == $table_field) {
- return $return;
- }
- }
- else {
-
-
- if ($existing_field['alias'] == $field) {
- return $return;
- }
- }
- }
-
- foreach ($this->expressions as $expression) {
- if ($expression['alias'] == $field) {
- return $return;
- }
- }
-
-
-
-
- foreach ($this->tables as $table) {
- if (!empty($table['all_fields'])) {
- return $return;
- }
- }
-
-
-
- if ($this->connection->escapeField($field) != $field) {
- return $return;
- }
-
- $this->addField(NULL, $field);
- return $return;
- }
- }
|