Exemplo n.º 1
0
 /**
  *    real implementation of Charcoal_SmartGateway::insert()
  *
  * @param Charcoal_String|string $comment                comment text
  * @param string|Charcoal_QueryTarget $query_target      description about target model, alias, or joins
  * @param Charcoal_DTO $data                             associative array/HashMap/DTO object to insert
  *
  * @return int                    last inserted id
  */
 public function insert($comment, $query_target, $data)
 {
     Charcoal_ParamTrait::validateString(1, $comment, TRUE);
     Charcoal_ParamTrait::validateIsA(2, 'Charcoal_QueryTarget', $query_target);
     Charcoal_ParamTrait::validateHashMapOrDTO(3, $data);
     $model = $this->getModel($query_target->getModelName());
     $alias = $query_target->getAlias();
     list($sql, $params) = $this->sql_builder->buildInsertSQL($model, $alias, $data);
     $sql = !empty($comment) ? $this->sql_builder->prependComment($sql, $comment) : $sql;
     $this->data_source->prepareExecute($sql, $params);
     $sql = $this->sql_builder->buildLastIdSQL();
     $sql = !empty($comment) ? $this->sql_builder->prependComment($sql, $comment) : $sql;
     $result = $this->data_source->prepareExecute($sql);
     $row = $this->data_source->fetchArray($result);
     $new_id = $row[0];
     log_debug("debug,smart_gateway,sql", "new_id:{$new_id}", self::TAG);
     return $new_id;
 }