作者:kravci
项目:cor
public function __construct()
{
$connection = new \Nette\Database\Connection('mysql:host=127.0.0.1;dbname=test', 'root', '');
\Nette\Database\Helpers::loadFromFile($connection, __DIR__ . '/sql/db.sql');
$structure = new \Nette\Database\Structure($connection, new \Nette\Caching\Storages\FileStorage(__DIR__ . '/../../temp/'));
$conventions = new \Nette\Database\Conventions\DiscoveredConventions($structure);
$this->database = new \Nette\Database\Context($connection, $structure, $conventions, new \Nette\Caching\Storages\FileStorage(__DIR__ . '/../../temp/'));
$this->cache = new Nette\Caching\Storages\FileStorage(__DIR__ . '/../../temp');
}
作者:pipaslo
项目:doctrin
/**
* @param array
* @return string
*/
protected function processQuery(array $query)
{
$s = '';
list($sql, $params, $time) = $query;
$s .= '<tr><td>' . sprintf('%0.3f', $time * 1000);
$s .= '</td><td class="nette-Doctrine2Panel-sql">' . Helpers::dumpSql($sql);
$s .= '</td><td>' . Dumper::toHtml($params) . '</tr>';
return $s;
}
作者:exese
项目:nette20logi
public function getPanel()
{
$this->disabled = TRUE;
$s = '';
$h = 'htmlSpecialChars';
foreach ($this->queries as $i => $query) {
list($sql, $params, $time, $rows, $connection, $source) = $query;
$explain = NULL;
// EXPLAIN is called here to work SELECT FOUND_ROWS()
if ($this->explain && preg_match('#\\s*\\(?\\s*SELECT\\s#iA', $sql)) {
try {
$cmd = is_string($this->explain) ? $this->explain : 'EXPLAIN';
$explain = $connection->queryArgs("{$cmd} {$sql}", $params)->fetchAll();
} catch (\PDOException $e) {
}
}
$s .= '<tr><td>' . sprintf('%0.3f', $time * 1000);
if ($explain) {
static $counter;
$counter++;
$s .= "<br /><a href='#' class='nette-toggler' rel='#nette-DbConnectionPanel-row-{$counter}'>explain ►</a>";
}
$s .= '</td><td class="nette-DbConnectionPanel-sql">' . Helpers::dumpSql(self::$maxLength ? Nette\Utils\Strings::truncate($sql, self::$maxLength) : $sql);
if ($explain) {
$s .= "<table id='nette-DbConnectionPanel-row-{$counter}' class='nette-collapsed'><tr>";
foreach ($explain[0] as $col => $foo) {
$s .= "<th>{$h($col)}</th>";
}
$s .= "</tr>";
foreach ($explain as $row) {
$s .= "<tr>";
foreach ($row as $col) {
$s .= "<td>{$h($col)}</td>";
}
$s .= "</tr>";
}
$s .= "</table>";
}
if ($source) {
$s .= Nette\Diagnostics\Helpers::editorLink($source[0], $source[1])->class('nette-DbConnectionPanel-source');
}
$s .= '</td><td>';
foreach ($params as $param) {
$s .= Debugger::dump($param, TRUE);
}
$s .= '</td><td>' . $rows . '</td></tr>';
}
return empty($this->queries) ? '' : '<style> #nette-debug td.nette-DbConnectionPanel-sql { background: white !important }
#nette-debug .nette-DbConnectionPanel-source { color: #BBB !important }
#nette-debug nette-DbConnectionPanel tr table { margin: 8px 0; max-height: 150px; overflow:auto } </style>
<h1>Queries: ' . count($this->queries) . ($this->totalTime ? ', time: ' . sprintf('%0.3f', $this->totalTime * 1000) . ' ms' : '') . '</h1>
<div class="nette-inner nette-DbConnectionPanel">
<table>
<tr><th>Time ms</th><th>SQL Statement</th><th>Params</th><th>Rows</th></tr>' . $s . '
</table>
</div>';
}
作者:trejja
项目:authorizatio
protected function execute(InputInterface $input, OutputInterface $output)
{
$connection = $this->database->getConnection();
Nette\Database\Helpers::loadFromFile($connection, $this->getFile(static::FILE_USERS_TABLE));
Nette\Database\Helpers::loadFromFile($connection, $this->getFile(static::FILE_ROLES_TABLE));
Nette\Database\Helpers::loadFromFile($connection, $this->getFile(static::FILE_RESOURCES_TABLE));
Nette\Database\Helpers::loadFromFile($connection, $this->getFile(static::FILE_USER_ROLE_TABLE));
Nette\Database\Helpers::loadFromFile($connection, $this->getFile(static::FILE_USER_REQUEST_TABLE));
Nette\Database\Helpers::loadFromFile($connection, $this->getFile(static::FILE_ROLES_DATA_TABLE));
Nette\Database\Helpers::loadFromFile($connection, $this->getFile(static::FILE_IDENTITY_HASH_TABLE));
}
作者:filsedl
项目:hyperro
/**
* @return array
*/
protected function getTables()
{
$tables = [];
foreach ($this->structure->getTables() as $table) {
if ($table['view'] === FALSE) {
foreach ($this->structure->getColumns($table['name']) as $column) {
$tables[$table['name']][$column['name']] = \Nette\Database\Helpers::detectType($column['nativetype']);
}
}
}
return $tables;
}
作者:ricco2
项目:databas
public static function renderException($e)
{
if (!$e instanceof \PDOException) {
return;
}
if (isset($e->queryString)) {
$sql = $e->queryString;
} elseif ($item = Tracy\Helpers::findTrace($e->getTrace(), 'PDO::prepare')) {
$sql = $item['args'][0];
}
return isset($sql) ? ['tab' => 'SQL', 'panel' => Helpers::dumpSql($sql)] : NULL;
}
作者:jakubskr
项目:testbenc
/** @internal */
private function __testbench_ndb_setupDatabase(Connection $db, $container)
{
$this->__testbench_ndb_databaseName = 'db_tests_' . getmypid();
$this->__testbench_ndb_dropDatabase($db);
$this->__testbench_ndb_createDatabase($db);
if (isset($container->parameters['testbench']['sqls'])) {
foreach ($container->parameters['testbench']['sqls'] as $file) {
\Nette\Database\Helpers::loadFromFile($db, $file);
}
}
register_shutdown_function(function () use($db) {
$this->__testbench_ndb_dropDatabase($db);
});
}
作者:mrtnzlm
项目:testbenc
/** @internal */
public function __testbench_database_setup($connection, \Nette\DI\Container $container, $persistent = FALSE)
{
$config = $container->parameters['testbench'];
$this->__testbench_databaseName = $config['dbprefix'] . getenv(\Tester\Environment::THREAD);
$this->__testbench_database_drop($connection, $container);
$this->__testbench_database_create($connection, $container);
foreach ($config['sqls'] as $file) {
\Nette\Database\Helpers::loadFromFile($connection, $file);
}
if ($persistent === FALSE) {
register_shutdown_function(function () use($connection, $container) {
$this->__testbench_database_drop($connection, $container);
});
}
}
作者:divisions-etc
项目:nette-propel2-extensio
/**
* @return string
*/
public function getPanel()
{
$output = '';
foreach ($this->queries as $record) {
$time = $record['time'];
$query = $record['query'];
$output .= '<tr><td>';
$output .= $time ? $time . ' ms' : 'null';
$output .= '</td><td>' . Helpers::dumpSql($query);
$output .= '</td></tr>';
}
return empty($this->queries) ? '' : '<style> #tracy-debug .tracy-PropelPanel tr table { margin: 8px 0; max-height: 150px; overflow:auto }</style>
<h1>Channel: ' . htmlSpecialChars($this->channelName, ENT_QUOTES, 'UTF-8') . ' | Queries: ' . htmlSpecialChars($this->profiledQueriesCounter, ENT_QUOTES, 'UTF-8') . ' / ' . htmlSpecialChars($this->unprofiledQueriesCounter, ENT_QUOTES, 'UTF-8') . ' | Time: ' . htmlSpecialChars($this->totalTime, ENT_QUOTES, 'UTF-8') . 'ms</h1>
<div class="tracy-inner tracy-PropelPanel" style="max-width: 800px;">
<table>
<tr><th>Time</th><th>SQL Statement</th></tr>' . $output . '
</table>
</div>';
}
作者:manGowe
项目:MangoPressSqlPane
public function getPanel()
{
global $wpdb;
$inner = '';
foreach ($wpdb->queries as $q) {
$query = \Nette\Database\Helpers::dumpSql($q[0]);
$time = round($q[1] * 100000) / 1000;
$files = $q[2];
$callstack = explode(', ', $q[2]);
array_shift($callstack);
array_shift($callstack);
array_shift($callstack);
foreach ($callstack as &$row) {
$row = htmlspecialchars($row);
}
unset($row);
$callstack = implode('<br>', $callstack);
$inner .= "<tr><td rowspan='2'>{$time}</td><td><code>{$query}</code></td></tr><tr><td><code style='font-size:.8em'>{$callstack}</code></td></tr>";
}
$panelHtml = "\n\t\t<h1>WordPress SQL</h1>\n\t\t<div class='tracy-inner nette-DbConnectionPanel'>\n\t\t\t<table>\n\t\t\t\t<tr><th>Time ms</th><th>SQL Query</th></tr>\n\t\t\t\t\t{$inner}\n\t\t\t</table>\n\t\t</div>\n\t\t";
return $panelHtml;
}
作者:RELIGI
项目:DuplicateQueriesPane
public function logQuery(Connection $connection, $result)
{
if (!$result instanceof ResultSet) {
return;
}
$queryString = $result->getQueryString();
if (Strings::startsWith($queryString, 'EXPLAIN')) {
return;
}
$source = NULL;
$trace = $result instanceof \PDOException ? $result->getTrace() : debug_backtrace(PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : FALSE);
foreach ($trace as $row) {
if (isset($row['file']) && is_file($row['file']) && !Debugger::getBluescreen()->isCollapsed($row['file'])) {
if (isset($row['function']) && strpos($row['function'], 'call_user_func') === 0 || isset($row['class']) && is_subclass_of($row['class'], '\\Nette\\Database\\Connection')) {
continue;
}
$source = array($row['file'], (int) $row['line']);
break;
}
}
$sqlQuery = Helpers::dumpSql($queryString, $result->getParameters(), $connection);
$this->queries[$sqlQuery][] = array($sqlQuery, $source);
}
作者:nakouka
项目:raspi_ww
function getPanel()
{
$this->disabled = TRUE;
$s = '';
foreach ($this->queries as $query) {
list($sql, $params, $time, $rows, $connection, $source) = $query;
$explain = NULL;
if ($this->explain && preg_match('#\\s*\\(?\\s*SELECT\\s#iA', $sql)) {
try {
$cmd = is_string($this->explain) ? $this->explain : 'EXPLAIN';
$explain = $connection->queryArgs("{$cmd} {$sql}", $params)->fetchAll();
} catch (\PDOException $e) {
}
}
$s .= '<tr><td>' . sprintf('%0.3f', $time * 1000);
if ($explain) {
static $counter;
$counter++;
$s .= "<br /><a href='#' class='nette-toggler' rel='#nette-DbConnectionPanel-row-{$counter}'>explain ►</a>";
}
$s .= '</td><td class="nette-DbConnectionPanel-sql">' . Helpers::dumpSql(self::$maxLength ? Nette\Utils\Strings::truncate($sql, self::$maxLength) : $sql);
if ($explain) {
$s .= "<table id='nette-DbConnectionPanel-row-{$counter}' class='nette-collapsed'><tr>";
foreach ($explain[0] as $col => $foo) {
$s .= '<th>' . htmlSpecialChars($col) . '</th>';
}
$s .= "</tr>";
foreach ($explain as $row) {
$s .= "<tr>";
foreach ($row as $col) {
$s .= '<td>' . htmlSpecialChars($col) . '</td>';
}
$s .= "</tr>";
}
$s .= "</table>";
}
if ($source) {
$s .= Nette\Diagnostics\Helpers::editorLink($source[0], $source[1])->class('nette-DbConnectionPanel-source');
}
$s .= '</td><td>';
foreach ($params as $param) {
$s .= Debugger::dump($param, TRUE);
}
$s .= '</td><td>' . $rows . '</td></tr>';
}
return $this->count ? '<style class="nette-debug"> #nette-debug td.nette-DbConnectionPanel-sql { background: white !important }
#nette-debug .nette-DbConnectionPanel-source { color: #BBB !important } </style>
<h1 title="' . htmlSpecialChars($connection->getDsn()) . '">Queries: ' . $this->count . ($this->totalTime ? ', time: ' . sprintf('%0.3f', $this->totalTime * 1000) . ' ms' : '') . ', ' . htmlSpecialChars($this->name) . '</h1>
<div class="nette-inner nette-DbConnectionPanel">
<table>
<tr><th>Time ms</th><th>SQL Statement</th><th>Params</th><th>Rows</th></tr>' . $s . '
</table>' . (count($this->queries) < $this->count ? '<p>...and more</p>' : '') . '</div>' : '';
}
作者:trejja
项目:util
protected function execute(InputInterface $input, OutputInterface $output)
{
$connection = $this->database->getConnection();
$driverName = $connection->getPdo()->getAttribute(\PDO::ATTR_DRIVER_NAME);
Nette\Database\Helpers::loadFromFile($connection, $this->getFileName($driverName . '.' . static::FILE_LABELS_TABLE));
}
作者:rikiles
项目:tracy-query-pane
/**
* Actual formatted query, e.g. 'SELECT * FROM ...'
*
* @return Html|string
*/
public function getQuery()
{
$html = trim(Nette\Database\Helpers::dumpSql($this->query, $this->bindings));
return Html::el()->setHtml($html);
}
作者:TheTypoMaste
项目:SPHERE-Framewor
/**
* Displays complete result set as HTML table for debug purposes.
*
* @return void
*/
public function dump()
{
Helpers::dumpResult($this);
}
作者:jave00
项目:tes
/**
* @inheritDoc
*/
public function fetchPairs($key = NULL, $value = NULL)
{
return Nette\Database\Helpers::toPairs($this->fetchAll(), $key, $value);
}
作者:prcharo
项目:w-pps-realit
/**
* Returns associative array of detected types (IReflection::FIELD_*) in result set.
*/
public function getColumnTypes(\PDOStatement $statement)
{
return Nette\Database\Helpers::detectTypes($statement);
}
作者:tkrau
项目:propel-ba
/**
* @return string
* @internal
*/
public function getRows()
{
$self = $this;
return implode('', array_map(function ($message) use($self) {
return '<tr>' . '<td class="time">' . 1000 * $self->extractTime($message) . '</td>' . '<td class="sql">' . Database\Helpers::dumpSql($self->extractSql($message)) . $self->extractLink($message) . '</td>' . '<td class="mem">' . $self->extractMem($message) . '</td>' . '<td class="method">' . $self->extractMethod($message) . '</td>' . '</tr>';
}, $this->messages));
}
作者:mesou
项目:source
private function determineFromColumns(array $columns)
{
$out = [];
foreach ($columns as $column) {
$type = Nette\Database\Helpers::detectType($column['nativetype']);
if ($column['nativetype'] === 'ENUM') {
$out[$column['name']] = ['type' => IColumnStructure::ENUM];
$enum = $column['vendor']['Type'];
$options = str_getcsv(str_replace('enum(', '', substr($enum, 0, strlen($enum) - 1)), ',', "'");
$out[$column['name']]['values'] = [];
foreach ($options as $option) {
$out[$column['name']]['values'][] = $option;
}
} elseif ($column['nativetype'] === 'TINYINT' && $column['size'] === 1) {
$out[$column['name']] = ['type' => IColumnStructure::BOOL];
} else {
switch ($type) {
case Nette\Database\IStructure::FIELD_TEXT:
$out[$column['name']] = ['type' => IColumnStructure::TEXT];
break;
case Nette\Database\IStructure::FIELD_INTEGER:
case Nette\Database\IStructure::FIELD_FLOAT:
$out[$column['name']] = ['type' => IColumnStructure::NUMBER];
break;
case Nette\Database\IStructure::FIELD_DATE:
case Nette\Database\IStructure::FIELD_TIME:
case Nette\Database\IStructure::FIELD_DATETIME:
case Nette\Database\IStructure::FIELD_UNIX_TIMESTAMP:
$out[$column['name']] = ['type' => IColumnStructure::DATE];
break;
case Nette\Database\IStructure::FIELD_BOOL:
$out[$column['name']] = ['type' => IColumnStructure::BOOL];
break;
}
}
if (isset($out[$column['name']])) {
$out[$column['name']]['nullable'] = $column['nullable'];
}
}
return $out;
}
作者:nextra
项目:tracy-query-pane
/**
* Actual formatted query, e.g. 'SELECT * FROM ...'
*
* @return Html|string
*/
public function getQuery()
{
return trim(NDB\Helpers::dumpSql($this->result->getQueryString(), $this->result->getParameters(), $this->result->connection));
}