Пример #1
0
 /**
  * Update model field in database
  *
  * @return bool
  * @throws Exception
  */
 private function update()
 {
     // validate model PHP structure if necessary
     static::_validateModel();
     // build update query on model table
     $helper = new InternalQueryHelper();
     $helper->update(self::formatTableNameMySQL());
     // setting model fields value
     $params = array();
     foreach (static::$_tableFields as $unChamp) {
         // array is for raw SQL value
         if (is_array($this->{$unChamp}) && isset($this->{$unChamp}[0])) {
             $helper->set($unChamp, $this->{$unChamp}[0]);
         } else {
             // Mysql prepared value
             $helper->set($unChamp, '?');
             $params[] = $this->{$unChamp};
         }
     }
     // restrict with model primary key
     $helper->where(self::formatTableNameMySQL() . ".`" . static::$_primaryKey . "`", "=", "?");
     $params[] = $this->{static::$_primaryKey};
     // update model in database
     $query = static::$_dataSource->prepare($helper->buildQuery());
     $query->execute($params);
     // check for mysql error
     $errorcode = $query->errorInfo();
     if ($errorcode[0] != "00000") {
         throw new Exception($errorcode[2]);
     }
     return true;
 }