/** * Compile the SQL query and return it. * * @param mixed $db Alt_Database instance or name of instance * @return string */ public function compile($db = NULL) { if (!is_object($db)) { // Get the Alt_Database instance $db = Alt_Database::instance($db); } // Start a deletion query $query = 'DELETE FROM ' . $db->quote_table($this->_table); if (!empty($this->_where)) { // Add deletion conditions $query .= ' WHERE ' . $this->_compile_conditions($db, $this->_where); } if (!empty($this->_order_by)) { // Add sorting $query .= ' ' . $this->_compile_order_by($db, $this->_order_by); } if ($this->_limit !== NULL) { // Add limiting $query .= ' LIMIT ' . $this->_limit; } $this->_sql = $query; return parent::compile($db); }
/** * Compile the SQL query and return it. * * @param mixed $db Alt_Database instance or name of instance * @return string */ public function compile($db = NULL) { if (!is_object($db)) { // Get the Alt_Database instance $db = Alt_Database::instance($db); } // Start an update query $query = 'UPDATE ' . $db->quote_table($this->_table); // Add the columns to update $query .= ' SET ' . $this->_compile_set($db, $this->_set); if (!empty($this->_where)) { // Add selection conditions $query .= ' WHERE ' . $this->_compile_conditions($db, $this->_where); } if (!empty($this->_order_by)) { // Add sorting $query .= ' ' . $this->_compile_order_by($db, $this->_order_by); } if ($this->_limit !== NULL) { // Add limiting $query .= ' LIMIT ' . $this->_limit; } $this->_sql = $query; return parent::compile($db); }
/** * Compile the SQL query and return it. * * @param mixed $db Alt_Database instance or name of instance * @return string */ public function compile($db = NULL) { if (!is_object($db)) { // Get the Alt_Database instance $db = Alt_Database::instance($db); } // Callback to quote columns $quote_column = array($db, 'quote_column'); // Callback to quote tables $quote_table = array($db, 'quote_table'); // Start a selection query $query = 'SELECT '; if ($this->_distinct === TRUE) { // Select only unique results $query .= 'DISTINCT '; } if (empty($this->_select)) { // Select all columns $query .= '*'; } else { // Select all columns $query .= implode(', ', array_unique(array_map($quote_column, $this->_select))); } if (!empty($this->_from)) { // Set tables to select from $query .= ' FROM ' . implode(', ', array_unique(array_map($quote_table, $this->_from))); } if (!empty($this->_join)) { // Add tables to join $query .= ' ' . $this->_compile_join($db, $this->_join); } if (!empty($this->_where)) { // Add selection conditions $query .= ' WHERE ' . $this->_compile_conditions($db, $this->_where); } if (!empty($this->_group_by)) { // Add grouping $query .= ' ' . $this->_compile_group_by($db, $this->_group_by); } if (!empty($this->_having)) { // Add filtering conditions $query .= ' HAVING ' . $this->_compile_conditions($db, $this->_having); } if (!empty($this->_order_by)) { // Add sorting $query .= ' ' . $this->_compile_order_by($db, $this->_order_by); } if ($this->_limit !== NULL) { // Add limiting $query .= ' LIMIT ' . $this->_limit; } if ($this->_offset !== NULL) { // Add offsets $query .= ' OFFSET ' . $this->_offset; } if (!empty($this->_union)) { foreach ($this->_union as $u) { $query .= ' UNION '; if ($u['all'] === TRUE) { $query .= 'ALL '; } $query .= $u['select']->compile($db); } } $this->_sql = $query; return parent::compile($db); }