createDataSet() public method

Creates a dataset containing the specified table names. If no table names are specified then it will created a dataset over the entire database.
public createDataSet ( array $tableNames = NULL ) : PHPUnit_Extensions_Database_DataSet_IDataSet
$tableNames array
return PHPUnit_Extensions_Database_DataSet_IDataSet
示例#1
0
    /**
     * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
     * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet
     */
    public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
    {
        $databaseDataSet = $connection->createDataSet();

        $dsIterator = $this->iteratorDirection == self::ITERATOR_TYPE_REVERSE ? $dataSet->getReverseIterator() : $dataSet->getIterator();

        foreach ($dsIterator as $table) {
            /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
            $databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName());
            $query                 = $this->buildOperationQuery($databaseTableMetaData, $table, $connection);

            if ($query === FALSE && $table->getRowCount() > 0) {
                throw new PHPUnit_Extensions_Database_Operation_Exception($this->operationName, '', array(), $table, "Rows requested for insert, but no columns provided!");
            }

            $statement = $connection->getConnection()->prepare($query);
            $rowCount  = $table->getRowCount();

            for ($i = 0; $i < $rowCount; $i++) {
                $args = $this->buildOperationArguments($databaseTableMetaData, $table, $i);

                try {
                    $statement->execute($args);
                }

                catch (Exception $e) {
                    throw new PHPUnit_Extensions_Database_Operation_Exception(
                      $this->operationName, $query, $args, $table, $e->getMessage()
                    );
                }
            }
        }
    }
 /**
  * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
  * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet
  */
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     $databaseDataSet = $connection->createDataSet();
     foreach ($dataSet as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName());
         $query = $this->buildOperationQuery($databaseTableMetaData, $table, $connection);
         $statement = $connection->getConnection()->prepare($query);
         for ($i = 0; $i < $table->getRowCount(); $i++) {
             $args = $this->buildOperationArguments($databaseTableMetaData, $table, $i);
             try {
                 $statement->execute($args);
             } catch (Exception $e) {
                 throw new PHPUnit_Extensions_Database_Operation_Exception($this->operationName, $query, $args, $table, $e->getMessage());
             }
         }
     }
 }
示例#3
0
文件: Replace.php 项目: qcodo/qcodo
 /**
  * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
  * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet
  */
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     $insertOperation = new PHPUnit_Extensions_Database_Operation_Insert();
     $updateOperation = new PHPUnit_Extensions_Database_Operation_Update();
     $databaseDataSet = $connection->createDataSet();
     foreach ($dataSet as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName());
         $insertQuery = $insertOperation->buildOperationQuery($databaseTableMetaData, $table, $connection);
         $updateQuery = $updateOperation->buildOperationQuery($databaseTableMetaData, $table, $connection);
         $selectQuery = $this->buildOperationQuery($databaseTableMetaData, $table, $connection);
         $insertStatement = $connection->getConnection()->prepare($insertQuery);
         $updateStatement = $connection->getConnection()->prepare($updateQuery);
         $selectStatement = $connection->getConnection()->prepare($selectQuery);
         $rowCount = $table->getRowCount();
         for ($i = 0; $i < $rowCount; $i++) {
             $selectArgs = $this->buildOperationArguments($databaseTableMetaData, $table, $i);
             $query = $selectQuery;
             $args = $selectArgs;
             try {
                 $selectStatement->execute($selectArgs);
                 if ($selectStatement->fetchColumn(0) > 0) {
                     $updateArgs = $updateOperation->buildOperationArguments($databaseTableMetaData, $table, $i);
                     $query = $updateQuery;
                     $args = $updateArgs;
                     $updateStatement->execute($updateArgs);
                 } else {
                     $insertArgs = $insertOperation->buildOperationArguments($databaseTableMetaData, $table, $i);
                     $query = $insertQuery;
                     $args = $insertArgs;
                     $insertStatement->execute($insertArgs);
                 }
             } catch (Exception $e) {
                 throw new PHPUnit_Extensions_Database_Operation_Exception($this->operationName, $query, $args, $table, $e->getMessage());
             }
         }
     }
 }