/** * 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; }