/**
  * Filter fields.
  *
  * @return  array Filter fields.
  */
 public function getFilterFields()
 {
     $fields = array();
     foreach ($this->tables as $alias => $table) {
         $columns = DatabaseHelper::getColumns($table['name']);
         foreach ($columns as $key => $var) {
             $fields[] = "{$alias}.{$key}";
         }
     }
     return $fields;
 }
 /**
  * Batch update some data.
  *
  * @param string $table      Table name.
  * @param string $data       Data you want to update.
  * @param mixed  $conditions Where conditions, you can use array or Compare object.
  *                           Example:
  *                           - `array('id' => 5)` => id = 5
  *                           - `new GteCompare('id', 20)` => 'id >= 20'
  *                           - `new Compare('id', '%Flower%', 'LIKE')` => 'id LIKE "%Flower%"'
  *
  * @return  boolean True if update success.
  */
 public function updateBatch($table, $data, $conditions = array())
 {
     $query = $this->db->getQuery(true);
     // Build conditions
     $query = QueryHelper::buildWheres($query, $conditions);
     // Build update values.
     $fields = array_keys(DatabaseHelper::getColumns($table));
     $hasField = false;
     foreach ((array) $data as $field => $value) {
         if (!in_array($field, $fields)) {
             continue;
         }
         $query->set($query->format('%n = %q', $field, $value));
         $hasField = true;
     }
     if (!$hasField) {
         return false;
     }
     $query->update($table);
     return $this->db->setQuery($query)->execute();
 }
 /**
  * Generate all selected fields from joined tables.
  *
  * This method will auto get all columns from every table and set the selected fields to: `alias`.`field` AS `alias_field`
  *
  * @return  array  Generated select fields.
  */
 public function getSelectFields()
 {
     $fields = array();
     $i = 0;
     foreach ($this->tables as $alias => $table) {
         $columns = DatabaseHelper::getColumns($table['name']);
         foreach ($columns as $column => $type) {
             $prefix = $table['prefix'];
             if ($i === 0) {
                 $prefix = $prefix === null ? false : true;
             } else {
                 $prefix = $prefix === null ? true : false;
             }
             if ($prefix === true) {
                 $fields[] = $this->db->quoteName("{$alias}.{$column}", "{$alias}_{$column}");
             } else {
                 $fields[] = $this->db->quoteName("{$alias}.{$column}", "{$column}");
             }
         }
         $i++;
     }
     return $fields;
 }
 /**
  * tearDownAfterClass
  *
  * @return  void
  */
 public static function tearDownAfterClass()
 {
     $queries = file_get_contents(static::getUninstallSql());
     DatabaseHelper::batchQuery($queries);
 }