PHPUnit_Extensions_Database_Operation_Insert::buildOperationArguments PHP Метод

buildOperationArguments() защищенный Метод

protected buildOperationArguments ( PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row )
$databaseTableMetaData PHPUnit_Extensions_Database_DataSet_ITableMetaData
$table PHPUnit_Extensions_Database_DataSet_ITable
    protected function buildOperationArguments(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row)
    {
        $args = array();
        foreach ($table->getTableMetaData()->getColumns() as $columnName) {
            $args[] = $table->getValue($row, $columnName);
        }
        return $args;
    }

Usage Example

Пример #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)
 {
     $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());
             }
         }
     }
 }
PHPUnit_Extensions_Database_Operation_Insert