/**
  * Do delete action, this method should be override by sub class.
  *
  * @param string  $table      The table name.
  * @param mixed   $conditions Where conditions, you can use array or Compare object.
  *
  * @throws \Exception
  * @return  boolean Will be always true.
  */
 public function delete($table, array $conditions = array())
 {
     $query = $this->db->getQuery(true);
     // Conditions.
     QueryHelper::buildWheres($query, $conditions);
     $query->delete($table);
     return $this->db->setQuery($query)->execute();
 }
예제 #2
0
 /**
  * Batch update some data.
  *
  * @param string $table      Table name.
  * @param array  $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($this->db->getTable($table)->getColumns());
     $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();
 }