Esempio n. 1
0
 public function insertEntity($entity, $mapper)
 {
     $insertStmt = QueryBuilder::buildInsertQuery($entity, $mapper);
     $values = array();
     $affectedRows = 0;
     foreach ($mapper->getPropertys() as $property) {
         if ($property->getColumn() != "id") {
             $method = "get" . $property->getName();
             $values[":" . $property->getColumn()] = $entity->{$method}();
         }
     }
     try {
         /* begin transac */
         $this->getDataSource()->beginTransaction();
         /* insert */
         $id = $this->getDataSource()->insertSingleRow($insertStmt, $values);
         if ($id != 0) {
             $affectedRows += 1;
         }
         $entity->setId($id);
         /* relations */
         foreach ($mapper->getRelations() as $relation) {
             $insertRelStmt = QueryBuilder::buildRelationQuery($entity, $relation);
             $valuesUpt = array();
             $m = "get" . $relation->getName();
             $getid = "getId";
             foreach ($entity->{$m}() as $rel) {
                 $valueRow = array();
                 $valueRow[":" . $relation->getLocalColumn()] = $entity->{$getid}();
                 $valueRow[":" . $relation->getForeignColumn()] = $rel->{$getid}();
                 $valuesUpt[] = $valueRow;
             }
             $this->getDataSource()->insertMultipleRow($insertRelStmt, $valuesUpt);
         }
         /* end transaction */
         $this->getDataSource()->commitTransaction();
     } catch (PDOException $e) {
         $this->getDataSource()->rollbackTransaction();
     }
     return $affectedRows;
 }
Esempio n. 2
0
 function doInsert($entity, $mapper)
 {
     $statement = QueryBuilder::buildInsertQuery($entity, $mapper);
     $stmt = $this->getConnection()->prepare($statement);
     foreach ($mapper->getPropertys() as $property) {
         if ($property->getColumn() != "id") {
             $method = "get" . $property->getName();
             $stmt->bindParam(":" . $property->getColumn(), $entity->{$method}());
         }
     }
     $affectedRows = $stmt->execute();
     return $affectedRows;
 }