PhpBench\Extensions\Dbal\Storage\Driver\Dbal\Persister::insertUpdate PHP Метод

insertUpdate() приватный Метод

private insertUpdate ( Doctrine\DBAL\Connection $conn, $tableName, array $data, $identifier = null )
$conn Doctrine\DBAL\Connection
$data array
    private function insertUpdate(Connection $conn, $tableName, array $data, $identifier = null)
    {
        if (is_numeric($identifier)) {
            $identifier = ['id', $identifier];
        }
        $columnNames = array_keys($data);
        $values = array_values($data);
        if ($identifier) {
            $updateSql = implode(', ', array_map(function ($value) {
                return sprintf('%s = ?', $value);
            }, $columnNames));
            $stmt = $conn->prepare(sprintf('UPDATE %s SET %s WHERE ? = ?', $tableName, $updateSql));
            $values[] = $identifier[0];
            $values[] = $identifier[1];
            $stmt->execute($values);
            return $identifier[1];
        }
        $insertSql = implode(', ', $columnNames);
        $placeholders = implode(', ', array_fill(0, count($columnNames), '?'));
        $stmt = $conn->prepare(sprintf('INSERT INTO %s (%s) VALUES (%s)', $tableName, $insertSql, $placeholders));
        $stmt->execute($values);
        return $conn->lastInsertId();
    }