Remove redundant docblocks, bump php version requirement
This commit is contained in:
parent
69c27e2415
commit
3013242106
@ -24,11 +24,11 @@
|
|||||||
"config": {
|
"config": {
|
||||||
"lock": false,
|
"lock": false,
|
||||||
"platform": {
|
"platform": {
|
||||||
"php": "7.4"
|
"php": "8.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.4",
|
"php": ">=8.1",
|
||||||
"ext-pdo": "*"
|
"ext-pdo": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
@ -26,13 +26,11 @@ final class ConnectionManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Map of named database connections
|
* Map of named database connections
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
private array $connections = [];
|
private array $connections = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class instance variable
|
* Class instance variable
|
||||||
* @var ConnectionManager|null
|
|
||||||
*/
|
*/
|
||||||
private static ?ConnectionManager $instance = NULL;
|
private static ?ConnectionManager $instance = NULL;
|
||||||
|
|
||||||
@ -69,7 +67,6 @@ final class ConnectionManager {
|
|||||||
* Make sure serialize/deserialize doesn't work
|
* Make sure serialize/deserialize doesn't work
|
||||||
*
|
*
|
||||||
* @throws DomainException
|
* @throws DomainException
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function __wakeup(): void
|
public function __wakeup(): void
|
||||||
{
|
{
|
||||||
@ -80,7 +77,6 @@ final class ConnectionManager {
|
|||||||
* Return a connection manager instance
|
* Return a connection manager instance
|
||||||
*
|
*
|
||||||
* @staticvar null $instance
|
* @staticvar null $instance
|
||||||
* @return ConnectionManager
|
|
||||||
*/
|
*/
|
||||||
public static function getInstance(): ConnectionManager
|
public static function getInstance(): ConnectionManager
|
||||||
{
|
{
|
||||||
@ -96,7 +92,6 @@ final class ConnectionManager {
|
|||||||
* Returns the connection specified by the name given
|
* Returns the connection specified by the name given
|
||||||
*
|
*
|
||||||
* @param string|array|object $name
|
* @param string|array|object $name
|
||||||
* @return QueryBuilderInterface
|
|
||||||
* @throws Exception\NonExistentConnectionException
|
* @throws Exception\NonExistentConnectionException
|
||||||
*/
|
*/
|
||||||
public function getConnection($name = ''): QueryBuilderInterface
|
public function getConnection($name = ''): QueryBuilderInterface
|
||||||
@ -121,7 +116,6 @@ final class ConnectionManager {
|
|||||||
*
|
*
|
||||||
* @param array|object $params
|
* @param array|object $params
|
||||||
* @throws Exception\BadDBDriverException
|
* @throws Exception\BadDBDriverException
|
||||||
* @return QueryBuilderInterface
|
|
||||||
*/
|
*/
|
||||||
public function connect($params): QueryBuilderInterface
|
public function connect($params): QueryBuilderInterface
|
||||||
{
|
{
|
||||||
@ -131,9 +125,9 @@ final class ConnectionManager {
|
|||||||
$driver = "\\Query\\Drivers\\{$dbType}\\Driver";
|
$driver = "\\Query\\Drivers\\{$dbType}\\Driver";
|
||||||
|
|
||||||
// Create the database connection
|
// Create the database connection
|
||||||
$db = ! empty($params->user)
|
$db = empty($params->user)
|
||||||
? new $driver($dsn, $params->user, $params->pass, $options)
|
? new $driver($dsn, '', '', $options)
|
||||||
: new $driver($dsn, '', '', $options);
|
: new $driver($dsn, $params->user, $params->pass, $options);
|
||||||
|
|
||||||
// Set the table prefix, if it exists
|
// Set the table prefix, if it exists
|
||||||
if (isset($params->prefix))
|
if (isset($params->prefix))
|
||||||
@ -162,8 +156,8 @@ final class ConnectionManager {
|
|||||||
* Parses params into a dsn and option array
|
* Parses params into a dsn and option array
|
||||||
*
|
*
|
||||||
* @param array|object $rawParams
|
* @param array|object $rawParams
|
||||||
* @return array
|
|
||||||
* @throws Exception\BadDBDriverException
|
* @throws Exception\BadDBDriverException
|
||||||
|
* @return mixed[]
|
||||||
*/
|
*/
|
||||||
public function parseParams($rawParams): array
|
public function parseParams($rawParams): array
|
||||||
{
|
{
|
||||||
@ -187,14 +181,7 @@ final class ConnectionManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create the dsn for the database to connect to
|
// Create the dsn for the database to connect to
|
||||||
if(strtolower($dbType) === 'sqlite')
|
$dsn = strtolower($dbType) === 'sqlite' ? $params->file : $this->createDsn($dbType, $params);
|
||||||
{
|
|
||||||
$dsn = $params->file;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$dsn = $this->createDsn($dbType, $params);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return [$dsn, $dbType, $params, $options];
|
return [$dsn, $dbType, $params, $options];
|
||||||
@ -204,9 +191,6 @@ final class ConnectionManager {
|
|||||||
* Create the dsn from the db type and params
|
* Create the dsn from the db type and params
|
||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
* @param string $dbType
|
|
||||||
* @param stdClass $params
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
private function createDsn(string $dbType, stdClass $params): string
|
private function createDsn(string $dbType, stdClass $params): string
|
||||||
{
|
{
|
||||||
|
@ -35,59 +35,46 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to the last executed query
|
* Reference to the last executed query
|
||||||
* @var PDOStatement
|
|
||||||
*/
|
*/
|
||||||
protected PDOStatement $statement;
|
protected PDOStatement $statement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start character to escape identifiers
|
* Start character to escape identifiers
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $escapeCharOpen = '"';
|
protected string $escapeCharOpen = '"';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* End character to escape identifiers
|
* End character to escape identifiers
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $escapeCharClose = '"';
|
protected string $escapeCharClose = '"';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to sql class
|
* Reference to sql class
|
||||||
* @var SQLInterface
|
|
||||||
*/
|
*/
|
||||||
protected SQLInterface $driverSQL;
|
protected SQLInterface $driverSQL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to util class
|
* Reference to util class
|
||||||
* @var AbstractUtil
|
|
||||||
*/
|
*/
|
||||||
protected AbstractUtil $util;
|
protected AbstractUtil $util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Last query executed
|
* Last query executed
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $lastQuery = '';
|
protected string $lastQuery = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prefix to apply to table names
|
* Prefix to apply to table names
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $tablePrefix = '';
|
protected string $tablePrefix = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether the driver supports 'TRUNCATE'
|
* Whether the driver supports 'TRUNCATE'
|
||||||
* @var boolean
|
|
||||||
*/
|
*/
|
||||||
protected bool $hasTruncate = TRUE;
|
protected bool $hasTruncate = TRUE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PDO constructor wrapper
|
* PDO constructor wrapper
|
||||||
*
|
|
||||||
* @param string $dsn
|
|
||||||
* @param string $username
|
|
||||||
* @param string $password
|
|
||||||
* @param array $driverOptions
|
|
||||||
*/
|
*/
|
||||||
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $driverOptions=[])
|
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $driverOptions=[])
|
||||||
{
|
{
|
||||||
@ -100,13 +87,11 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the subclasses for the driver
|
* Loads the subclasses for the driver
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected function _loadSubClasses(): void
|
protected function _loadSubClasses(): void
|
||||||
{
|
{
|
||||||
// Load the sql and util class for the driver
|
// Load the sql and util class for the driver
|
||||||
$thisClass = \get_class($this);
|
$thisClass = $this::class;
|
||||||
$nsArray = explode("\\", $thisClass);
|
$nsArray = explode("\\", $thisClass);
|
||||||
array_pop($nsArray);
|
array_pop($nsArray);
|
||||||
$driver = array_pop($nsArray);
|
$driver = array_pop($nsArray);
|
||||||
@ -121,8 +106,6 @@ abstract class AbstractDriver
|
|||||||
* Allow invoke to work on table object
|
* Allow invoke to work on table object
|
||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
* @param string $name
|
|
||||||
* @param array $args
|
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function __call(string $name, array $args = [])
|
public function __call(string $name, array $args = [])
|
||||||
@ -142,11 +125,8 @@ abstract class AbstractDriver
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Accessors / Mutators
|
// ! Accessors / Mutators
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the last sql query executed
|
* Get the last sql query executed
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getLastQuery(): string
|
public function getLastQuery(): string
|
||||||
{
|
{
|
||||||
@ -155,9 +135,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the last query sql
|
* Set the last query sql
|
||||||
*
|
|
||||||
* @param string $queryString
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setLastQuery(string $queryString): void
|
public function setLastQuery(string $queryString): void
|
||||||
{
|
{
|
||||||
@ -166,8 +143,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the SQL class for the current driver
|
* Get the SQL class for the current driver
|
||||||
*
|
|
||||||
* @return SQLInterface
|
|
||||||
*/
|
*/
|
||||||
public function getSql(): SQLInterface
|
public function getSql(): SQLInterface
|
||||||
{
|
{
|
||||||
@ -176,8 +151,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Util class for the current driver
|
* Get the Util class for the current driver
|
||||||
*
|
|
||||||
* @return AbstractUtil
|
|
||||||
*/
|
*/
|
||||||
public function getUtil(): AbstractUtil
|
public function getUtil(): AbstractUtil
|
||||||
{
|
{
|
||||||
@ -186,9 +159,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the common table name prefix
|
* Set the common table name prefix
|
||||||
*
|
|
||||||
* @param string $prefix
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setTablePrefix(string $prefix): void
|
public function setTablePrefix(string $prefix): void
|
||||||
{
|
{
|
||||||
@ -198,12 +168,9 @@ abstract class AbstractDriver
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Concrete functions that can be overridden in child classes
|
// ! Concrete functions that can be overridden in child classes
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simplifies prepared statements for database queries
|
* Simplifies prepared statements for database queries
|
||||||
*
|
*
|
||||||
* @param string $sql
|
|
||||||
* @param array $data
|
|
||||||
* @return PDOStatement | FALSE
|
* @return PDOStatement | FALSE
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
@ -230,10 +197,7 @@ abstract class AbstractDriver
|
|||||||
/**
|
/**
|
||||||
* Create and execute a prepared statement with the provided parameters
|
* Create and execute a prepared statement with the provided parameters
|
||||||
*
|
*
|
||||||
* @param string $sql
|
|
||||||
* @param array $params
|
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function prepareExecute(string $sql, array $params): PDOStatement
|
public function prepareExecute(string $sql, array $params): PDOStatement
|
||||||
{
|
{
|
||||||
@ -245,8 +209,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns number of rows affected by an INSERT, UPDATE, DELETE type query
|
* Returns number of rows affected by an INSERT, UPDATE, DELETE type query
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function affectedRows(): int
|
public function affectedRows(): int
|
||||||
{
|
{
|
||||||
@ -256,8 +218,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Prefixes a table if it is not already prefixed
|
* Prefixes a table if it is not already prefixed
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function prefixTable(string $table): string
|
public function prefixTable(string $table): string
|
||||||
{
|
{
|
||||||
@ -285,9 +245,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Quote database table name, and set prefix
|
* Quote database table name, and set prefix
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function quoteTable(string $table): string
|
public function quoteTable(string $table): string
|
||||||
{
|
{
|
||||||
@ -301,9 +258,8 @@ abstract class AbstractDriver
|
|||||||
* Surrounds the string with the databases identifier escape characters
|
* Surrounds the string with the databases identifier escape characters
|
||||||
*
|
*
|
||||||
* @param mixed $identifier
|
* @param mixed $identifier
|
||||||
* @return string|array
|
|
||||||
*/
|
*/
|
||||||
public function quoteIdent($identifier)
|
public function quoteIdent($identifier): string|array
|
||||||
{
|
{
|
||||||
if (is_array($identifier))
|
if (is_array($identifier))
|
||||||
{
|
{
|
||||||
@ -314,7 +270,7 @@ abstract class AbstractDriver
|
|||||||
$identifier = (string)$identifier;
|
$identifier = (string)$identifier;
|
||||||
|
|
||||||
// Handle comma-separated identifiers
|
// Handle comma-separated identifiers
|
||||||
if (strpos($identifier, ',') !== FALSE)
|
if (str_contains($identifier, ','))
|
||||||
{
|
{
|
||||||
$parts = array_map('mb_trim', explode(',', $identifier));
|
$parts = array_map('mb_trim', explode(',', $identifier));
|
||||||
$parts = array_map([$this, __METHOD__], $parts);
|
$parts = array_map([$this, __METHOD__], $parts);
|
||||||
@ -440,7 +396,6 @@ abstract class AbstractDriver
|
|||||||
/**
|
/**
|
||||||
* Retrieve column information for the current database table
|
* Retrieve column information for the current database table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getColumns(string $table): ?array
|
public function getColumns(string $table): ?array
|
||||||
@ -451,7 +406,6 @@ abstract class AbstractDriver
|
|||||||
/**
|
/**
|
||||||
* Retrieve foreign keys for the table
|
* Retrieve foreign keys for the table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getFks(string $table): ?array
|
public function getFks(string $table): ?array
|
||||||
@ -462,7 +416,6 @@ abstract class AbstractDriver
|
|||||||
/**
|
/**
|
||||||
* Retrieve indexes for the table
|
* Retrieve indexes for the table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getIndexes(string $table): ?array
|
public function getIndexes(string $table): ?array
|
||||||
@ -482,8 +435,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the version of the database engine
|
* Get the version of the database engine
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getVersion(): string
|
public function getVersion(): string
|
||||||
{
|
{
|
||||||
@ -495,7 +446,6 @@ abstract class AbstractDriver
|
|||||||
*
|
*
|
||||||
* @param string|array|null $query
|
* @param string|array|null $query
|
||||||
* @param bool $filteredIndex
|
* @param bool $filteredIndex
|
||||||
* @return array|null
|
|
||||||
*/
|
*/
|
||||||
public function driverQuery($query, $filteredIndex=TRUE): ?array
|
public function driverQuery($query, $filteredIndex=TRUE): ?array
|
||||||
{
|
{
|
||||||
@ -525,7 +475,6 @@ abstract class AbstractDriver
|
|||||||
* Return the number of rows returned for a SELECT query
|
* Return the number of rows returned for a SELECT query
|
||||||
*
|
*
|
||||||
* @see http://us3.php.net/manual/en/pdostatement.rowcount.php#87110
|
* @see http://us3.php.net/manual/en/pdostatement.rowcount.php#87110
|
||||||
* @return int|null
|
|
||||||
*/
|
*/
|
||||||
public function numRows(): ?int
|
public function numRows(): ?int
|
||||||
{
|
{
|
||||||
@ -544,7 +493,6 @@ abstract class AbstractDriver
|
|||||||
/**
|
/**
|
||||||
* Create sql for batch insert
|
* Create sql for batch insert
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $data
|
* @param mixed $data
|
||||||
* @return array<string|array|null>
|
* @return array<string|array|null>
|
||||||
*/
|
*/
|
||||||
@ -557,7 +505,7 @@ abstract class AbstractDriver
|
|||||||
$vals = [];
|
$vals = [];
|
||||||
foreach($data as $group)
|
foreach($data as $group)
|
||||||
{
|
{
|
||||||
$vals = array_merge($vals, array_values($group));
|
$vals = [...$vals, ...array_values($group)];
|
||||||
}
|
}
|
||||||
|
|
||||||
$table = $this->quoteTable($table);
|
$table = $this->quoteTable($table);
|
||||||
@ -598,7 +546,7 @@ abstract class AbstractDriver
|
|||||||
// Get the keys of the current set of data, except the one used to
|
// Get the keys of the current set of data, except the one used to
|
||||||
// set the update condition
|
// set the update condition
|
||||||
$fields = array_unique(
|
$fields = array_unique(
|
||||||
array_reduce($data, static function ($previous, $current) use (&$affectedRows, $where) {
|
array_reduce($data, static function ($previous, $current) use (&$affectedRows, $where): array {
|
||||||
$affectedRows++;
|
$affectedRows++;
|
||||||
$keys = array_diff(array_keys($current), [$where]);
|
$keys = array_diff(array_keys($current), [$where]);
|
||||||
|
|
||||||
@ -653,9 +601,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Empty the passed table
|
* Empty the passed table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function truncate(string $table): PDOStatement
|
public function truncate(string $table): PDOStatement
|
||||||
{
|
{
|
||||||
@ -671,10 +616,6 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the returning clause for the current database
|
* Generate the returning clause for the current database
|
||||||
*
|
|
||||||
* @param string $query
|
|
||||||
* @param string $select
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function returning(string $query, string $select): string
|
public function returning(string $query, string $select): string
|
||||||
{
|
{
|
||||||
@ -694,7 +635,7 @@ abstract class AbstractDriver
|
|||||||
// that value, otherwise, return the original value
|
// that value, otherwise, return the original value
|
||||||
return (
|
return (
|
||||||
is_string($str)
|
is_string($str)
|
||||||
&& strpos($str, $this->escapeCharOpen) !== 0
|
&& ( ! str_starts_with($str, $this->escapeCharOpen))
|
||||||
&& strrpos($str, $this->escapeCharClose) !== 0
|
&& strrpos($str, $this->escapeCharClose) !== 0
|
||||||
)
|
)
|
||||||
? "{$this->escapeCharOpen}{$str}{$this->escapeCharClose}"
|
? "{$this->escapeCharOpen}{$str}{$this->escapeCharClose}"
|
||||||
@ -704,14 +645,11 @@ abstract class AbstractDriver
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the table prefix on the passed string
|
* Sets the table prefix on the passed string
|
||||||
*
|
|
||||||
* @param string $str
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
protected function _prefix(string $str): string
|
protected function _prefix(string $str): string
|
||||||
{
|
{
|
||||||
// Don't prefix an already prefixed table
|
// Don't prefix an already prefixed table
|
||||||
if (strpos($str, $this->tablePrefix) !== FALSE)
|
if (str_contains($str, $this->tablePrefix))
|
||||||
{
|
{
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
@ -23,10 +23,7 @@ abstract class AbstractSQL implements SQLInterface {
|
|||||||
/**
|
/**
|
||||||
* Limit clause
|
* Limit clause
|
||||||
*
|
*
|
||||||
* @param string $sql
|
|
||||||
* @param int $limit
|
|
||||||
* @param int $offset
|
* @param int $offset
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function limit(string $sql, int $limit, ?int $offset=NULL): string
|
public function limit(string $sql, int $limit, ?int $offset=NULL): string
|
||||||
{
|
{
|
||||||
|
@ -20,26 +20,15 @@ namespace Query\Drivers;
|
|||||||
*/
|
*/
|
||||||
abstract class AbstractUtil {
|
abstract class AbstractUtil {
|
||||||
|
|
||||||
/**
|
|
||||||
* Reference to the current connection object
|
|
||||||
* @var DriverInterface
|
|
||||||
*/
|
|
||||||
private DriverInterface $connection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save a reference to the connection object for later use
|
* Save a reference to the connection object for later use
|
||||||
*
|
|
||||||
* @param DriverInterface $connection
|
|
||||||
*/
|
*/
|
||||||
public function __construct(DriverInterface $connection)
|
public function __construct(private DriverInterface $connection)
|
||||||
{
|
{
|
||||||
$this->connection = $connection;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the driver object for the current connection
|
* Get the driver object for the current connection
|
||||||
*
|
|
||||||
* @return DriverInterface
|
|
||||||
*/
|
*/
|
||||||
public function getDriver(): DriverInterface
|
public function getDriver(): DriverInterface
|
||||||
{
|
{
|
||||||
@ -51,9 +40,7 @@ abstract class AbstractUtil {
|
|||||||
*
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param array $fields
|
* @param array $fields
|
||||||
* @param array $constraints
|
|
||||||
* @param bool $ifNotExists
|
* @param bool $ifNotExists
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function createTable($name, $fields, array $constraints=[], $ifNotExists=TRUE): string
|
public function createTable($name, $fields, array $constraints=[], $ifNotExists=TRUE): string
|
||||||
{
|
{
|
||||||
@ -93,7 +80,6 @@ abstract class AbstractUtil {
|
|||||||
* Drop the selected table
|
* Drop the selected table
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function deleteTable($name): string
|
public function deleteTable($name): string
|
||||||
{
|
{
|
||||||
@ -103,12 +89,10 @@ abstract class AbstractUtil {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Abstract Methods
|
// ! Abstract Methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an SQL file with the database table structure
|
* Return an SQL file with the database table structure
|
||||||
*
|
*
|
||||||
* @abstract
|
* @abstract
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
abstract public function backupStructure(): string;
|
abstract public function backupStructure(): string;
|
||||||
|
|
||||||
@ -116,7 +100,6 @@ abstract class AbstractUtil {
|
|||||||
* Return an SQL file with the database data as insert statements
|
* Return an SQL file with the database data as insert statements
|
||||||
*
|
*
|
||||||
* @abstract
|
* @abstract
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
abstract public function backupData(): string;
|
abstract public function backupData(): string;
|
||||||
|
|
||||||
|
@ -40,19 +40,12 @@ interface DriverInterface /* extends the interface of PDO */ {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor/Connection method
|
* Constructor/Connection method
|
||||||
*
|
|
||||||
* @param string $dsn
|
|
||||||
* @param string $username
|
|
||||||
* @param string $password
|
|
||||||
* @param array $driverOptions
|
|
||||||
*/
|
*/
|
||||||
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $driverOptions = []);
|
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $driverOptions = []);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simplifies prepared statements for database queries
|
* Simplifies prepared statements for database queries
|
||||||
*
|
*
|
||||||
* @param string $sql
|
|
||||||
* @param array $data
|
|
||||||
* @return PDOStatement|null
|
* @return PDOStatement|null
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
@ -61,7 +54,6 @@ interface DriverInterface /* extends the interface of PDO */ {
|
|||||||
/**
|
/**
|
||||||
* Retrieve column information for the current database table
|
* Retrieve column information for the current database table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getColumns(string $table): ?array;
|
public function getColumns(string $table): ?array;
|
||||||
@ -76,7 +68,6 @@ interface DriverInterface /* extends the interface of PDO */ {
|
|||||||
/**
|
/**
|
||||||
* Retrieve indexes for the table
|
* Retrieve indexes for the table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getIndexes(string $table): ?array;
|
public function getIndexes(string $table): ?array;
|
||||||
@ -84,7 +75,6 @@ interface DriverInterface /* extends the interface of PDO */ {
|
|||||||
/**
|
/**
|
||||||
* Retrieve foreign keys for the table
|
* Retrieve foreign keys for the table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getFks(string $table): ?array;
|
public function getFks(string $table): ?array;
|
||||||
@ -156,26 +146,16 @@ interface DriverInterface /* extends the interface of PDO */ {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Surrounds the string with the databases identifier escape characters
|
* Surrounds the string with the databases identifier escape characters
|
||||||
*
|
|
||||||
* @param string|array $ident
|
|
||||||
* @return string|array
|
|
||||||
*/
|
*/
|
||||||
public function quoteIdent($ident);
|
public function quoteIdent(string|array $ident): string|array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Quote database table name, and set prefix
|
* Quote database table name, and set prefix
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function quoteTable(string $table): string;
|
public function quoteTable(string $table): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and execute a prepared statement with the provided parameters
|
* Create and execute a prepared statement with the provided parameters
|
||||||
*
|
|
||||||
* @param string $sql
|
|
||||||
* @param array $params
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function prepareExecute(string $sql, array $params): PDOStatement;
|
public function prepareExecute(string $sql, array $params): PDOStatement;
|
||||||
|
|
||||||
@ -190,8 +170,6 @@ interface DriverInterface /* extends the interface of PDO */ {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns number of rows affected by an INSERT, UPDATE, DELETE type query
|
* Returns number of rows affected by an INSERT, UPDATE, DELETE type query
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function affectedRows(): int;
|
public function affectedRows(): int;
|
||||||
|
|
||||||
@ -205,81 +183,52 @@ interface DriverInterface /* extends the interface of PDO */ {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Prefixes a table if it is not already prefixed
|
* Prefixes a table if it is not already prefixed
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function prefixTable(string $table): string;
|
public function prefixTable(string $table): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create sql for batch insert
|
* Create sql for batch insert
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param array $data
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function insertBatch(string $table, array $data=[]): array;
|
public function insertBatch(string $table, array $data=[]): array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a batch update, and executes it.
|
* Creates a batch update, and executes it.
|
||||||
* Returns the number of affected rows
|
* Returns the number of affected rows
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param array $data
|
|
||||||
* @param string $where
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function updateBatch(string $table, array $data, string $where): array;
|
public function updateBatch(string $table, array $data, string $where): array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Empty the passed table
|
* Empty the passed table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function truncate(string $table): PDOStatement;
|
public function truncate(string $table): PDOStatement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the SQL class for the current driver
|
* Get the SQL class for the current driver
|
||||||
*
|
|
||||||
* @return SQLInterface
|
|
||||||
*/
|
*/
|
||||||
public function getSql(): SQLInterface;
|
public function getSql(): SQLInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Util class for the current driver
|
* Get the Util class for the current driver
|
||||||
*
|
|
||||||
* @return AbstractUtil
|
|
||||||
*/
|
*/
|
||||||
public function getUtil(): AbstractUtil;
|
public function getUtil(): AbstractUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the version of the database engine
|
* Get the version of the database engine
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getVersion(): string;
|
public function getVersion(): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the last sql query executed
|
* Get the last sql query executed
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getLastQuery(): string;
|
public function getLastQuery(): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the last query sql
|
* Set the last query sql
|
||||||
*
|
|
||||||
* @param string $queryString
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setLastQuery(string $queryString): void;
|
public function setLastQuery(string $queryString): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the common table name prefix
|
* Set the common table name prefix
|
||||||
*
|
|
||||||
* @param string $prefix
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function setTablePrefix(string $prefix): void;
|
public function setTablePrefix(string $prefix): void;
|
||||||
}
|
}
|
||||||
|
@ -26,15 +26,11 @@ class Driver extends AbstractDriver {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the backtick as the MySQL escape character
|
* Set the backtick as the MySQL escape character
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $escapeCharOpen = '`';
|
protected string $escapeCharOpen = '`';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the backtick as the MySQL escape character
|
* Set the backtick as the MySQL escape character
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $escapeCharClose = '`';
|
protected string $escapeCharClose = '`';
|
||||||
|
|
||||||
@ -42,10 +38,6 @@ class Driver extends AbstractDriver {
|
|||||||
* Connect to MySQL Database
|
* Connect to MySQL Database
|
||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
* @param string $dsn
|
|
||||||
* @param string $username
|
|
||||||
* @param string $password
|
|
||||||
* @param array $options
|
|
||||||
*/
|
*/
|
||||||
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $options=[])
|
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $options=[])
|
||||||
{
|
{
|
||||||
@ -57,7 +49,7 @@ class Driver extends AbstractDriver {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strpos($dsn, 'mysql') === FALSE)
|
if ( ! str_contains($dsn, 'mysql'))
|
||||||
{
|
{
|
||||||
$dsn = 'mysql:'.$dsn;
|
$dsn = 'mysql:'.$dsn;
|
||||||
}
|
}
|
||||||
@ -67,10 +59,6 @@ class Driver extends AbstractDriver {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the returning clause for the current database
|
* Generate the returning clause for the current database
|
||||||
*
|
|
||||||
* @param string $query
|
|
||||||
* @param string $select
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function returning(string $query, string $select): string
|
public function returning(string $query, string $select): string
|
||||||
{
|
{
|
||||||
|
@ -25,10 +25,7 @@ class SQL extends AbstractSQL {
|
|||||||
/**
|
/**
|
||||||
* Limit clause
|
* Limit clause
|
||||||
*
|
*
|
||||||
* @param string $sql
|
|
||||||
* @param int $limit
|
|
||||||
* @param int|boolean $offset
|
* @param int|boolean $offset
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function limit(string $sql, int $limit, ?int $offset=NULL): string
|
public function limit(string $sql, int $limit, ?int $offset=NULL): string
|
||||||
{
|
{
|
||||||
@ -42,9 +39,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the query plan for the sql query
|
* Get the query plan for the sql query
|
||||||
*
|
|
||||||
* @param string $sql
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function explain(string $sql): string
|
public function explain(string $sql): string
|
||||||
{
|
{
|
||||||
@ -53,8 +47,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Random ordering keyword
|
* Random ordering keyword
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function random(): string
|
public function random(): string
|
||||||
{
|
{
|
||||||
@ -63,8 +55,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list other databases
|
* Returns sql to list other databases
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function dbList(): string
|
public function dbList(): string
|
||||||
{
|
{
|
||||||
@ -78,7 +68,6 @@ SQL;
|
|||||||
* Returns sql to list tables
|
* Returns sql to list tables
|
||||||
*
|
*
|
||||||
* @param string $database
|
* @param string $database
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function tableList($database=''): string
|
public function tableList($database=''): string
|
||||||
{
|
{
|
||||||
@ -94,8 +83,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Overridden in MySQL class
|
* Overridden in MySQL class
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function systemTableList(): string
|
public function systemTableList(): string
|
||||||
{
|
{
|
||||||
@ -107,8 +94,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list views
|
* Returns sql to list views
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function viewList(): string
|
public function viewList(): string
|
||||||
{
|
{
|
||||||
@ -117,8 +102,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list triggers
|
* Returns sql to list triggers
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function triggerList(): string
|
public function triggerList(): string
|
||||||
{
|
{
|
||||||
@ -127,8 +110,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return sql to list functions
|
* Return sql to list functions
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function functionList(): string
|
public function functionList(): string
|
||||||
{
|
{
|
||||||
@ -137,8 +118,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return sql to list stored procedures
|
* Return sql to list stored procedures
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function procedureList(): string
|
public function procedureList(): string
|
||||||
{
|
{
|
||||||
@ -157,8 +136,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SQL to show list of field types
|
* SQL to show list of field types
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function typeList(): string
|
public function typeList(): string
|
||||||
{
|
{
|
||||||
@ -167,9 +144,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SQL to show information about columns in a table
|
* SQL to show information about columns in a table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function columnList(string $table): string
|
public function columnList(string $table): string
|
||||||
{
|
{
|
||||||
@ -179,9 +153,6 @@ SQL;
|
|||||||
/**
|
/**
|
||||||
* Get the list of foreign keys for the current
|
* Get the list of foreign keys for the current
|
||||||
* table
|
* table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function fkList(string $table): string
|
public function fkList(string $table): string
|
||||||
{
|
{
|
||||||
@ -204,9 +175,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of indexes for the current table
|
* Get the list of indexes for the current table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function indexList(string $table): string
|
public function indexList(string $table): string
|
||||||
{
|
{
|
||||||
|
@ -25,8 +25,6 @@ class Util extends AbstractUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's structure
|
* Create an SQL backup file for the current database's structure
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function backupStructure(): string
|
public function backupStructure(): string
|
||||||
{
|
{
|
||||||
@ -69,9 +67,6 @@ class Util extends AbstractUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's data
|
* Create an SQL backup file for the current database's data
|
||||||
*
|
|
||||||
* @param array $exclude
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function backupData(array $exclude=[]): string
|
public function backupData(array $exclude=[]): string
|
||||||
{
|
{
|
||||||
@ -94,7 +89,7 @@ class Util extends AbstractUtil {
|
|||||||
$rows = $res->fetchAll(PDO::FETCH_ASSOC);
|
$rows = $res->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
// Skip empty tables
|
// Skip empty tables
|
||||||
if (count($rows) < 1)
|
if ((is_countable($rows) ? count($rows) : 0) < 1)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -26,14 +26,10 @@ class Driver extends AbstractDriver {
|
|||||||
* Connect to a PosgreSQL database
|
* Connect to a PosgreSQL database
|
||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
* @param string $dsn
|
|
||||||
* @param string $username
|
|
||||||
* @param string $password
|
|
||||||
* @param array $options
|
|
||||||
*/
|
*/
|
||||||
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $options=[])
|
public function __construct(string $dsn, string $username=NULL, string $password=NULL, array $options=[])
|
||||||
{
|
{
|
||||||
if (strpos($dsn, 'pgsql') === FALSE)
|
if ( ! str_contains($dsn, 'pgsql'))
|
||||||
{
|
{
|
||||||
$dsn = 'pgsql:'.$dsn;
|
$dsn = 'pgsql:'.$dsn;
|
||||||
}
|
}
|
||||||
@ -60,10 +56,9 @@ SQL;
|
|||||||
/**
|
/**
|
||||||
* Retrieve foreign keys for the table
|
* Retrieve foreign keys for the table
|
||||||
*
|
*
|
||||||
* @param string $table
|
* @return mixed[]|null
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getFks($table): array
|
public function getFks(string $table): array
|
||||||
{
|
{
|
||||||
$valueMap = [
|
$valueMap = [
|
||||||
'c' => 'CASCADE',
|
'c' => 'CASCADE',
|
||||||
|
@ -24,9 +24,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the query plan for the sql query
|
* Get the query plan for the sql query
|
||||||
*
|
|
||||||
* @param string $sql
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function explain(string $sql): string
|
public function explain(string $sql): string
|
||||||
{
|
{
|
||||||
@ -35,8 +32,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Random ordering keyword
|
* Random ordering keyword
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function random(): string
|
public function random(): string
|
||||||
{
|
{
|
||||||
@ -45,8 +40,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list other databases
|
* Returns sql to list other databases
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function dbList(): string
|
public function dbList(): string
|
||||||
{
|
{
|
||||||
@ -59,8 +52,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list tables
|
* Returns sql to list tables
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function tableList(): string
|
public function tableList(): string
|
||||||
{
|
{
|
||||||
@ -75,8 +66,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list system tables
|
* Returns sql to list system tables
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function systemTableList(): string
|
public function systemTableList(): string
|
||||||
{
|
{
|
||||||
@ -91,8 +80,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list views
|
* Returns sql to list views
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function viewList(): string
|
public function viewList(): string
|
||||||
{
|
{
|
||||||
@ -107,8 +94,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list triggers
|
* Returns sql to list triggers
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function triggerList(): string
|
public function triggerList(): string
|
||||||
{
|
{
|
||||||
@ -132,8 +117,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return sql to list stored procedures
|
* Return sql to list stored procedures
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function procedureList(): string
|
public function procedureList(): string
|
||||||
{
|
{
|
||||||
@ -148,8 +131,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return sql to list sequences
|
* Return sql to list sequences
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function sequenceList(): string
|
public function sequenceList(): string
|
||||||
{
|
{
|
||||||
@ -163,9 +144,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return sql to list columns of the specified table
|
* Return sql to list columns of the specified table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function columnList(string $table): string
|
public function columnList(string $table): string
|
||||||
{
|
{
|
||||||
@ -185,8 +163,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SQL to show list of field types
|
* SQL to show list of field types
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function typeList(): string
|
public function typeList(): string
|
||||||
{
|
{
|
||||||
@ -201,9 +177,6 @@ SQL;
|
|||||||
/**
|
/**
|
||||||
* Get the list of foreign keys for the current
|
* Get the list of foreign keys for the current
|
||||||
* table
|
* table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function fkList(string $table): string
|
public function fkList(string $table): string
|
||||||
{
|
{
|
||||||
@ -243,9 +216,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of indexes for the current table
|
* Get the list of indexes for the current table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function indexList(string $table): string
|
public function indexList(string $table): string
|
||||||
{
|
{
|
||||||
|
@ -25,8 +25,6 @@ class Util extends AbstractUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's structure
|
* Create an SQL backup file for the current database's structure
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function backupStructure(): string
|
public function backupStructure(): string
|
||||||
{
|
{
|
||||||
@ -36,9 +34,6 @@ class Util extends AbstractUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's data
|
* Create an SQL backup file for the current database's data
|
||||||
*
|
|
||||||
* @param array $exclude
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function backupData(array $exclude=[]): string
|
public function backupData(array $exclude=[]): string
|
||||||
{
|
{
|
||||||
@ -60,7 +55,7 @@ class Util extends AbstractUtil {
|
|||||||
$objRes = $res->fetchAll(PDO::FETCH_ASSOC);
|
$objRes = $res->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
// Don't add to the file if the table is empty
|
// Don't add to the file if the table is empty
|
||||||
if (count($objRes) < 1)
|
if ((is_countable($objRes) ? count($objRes) : 0) < 1)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -22,54 +22,36 @@ interface SQLInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get database specific sql for limit clause
|
* Get database specific sql for limit clause
|
||||||
*
|
|
||||||
* @param string $sql
|
|
||||||
* @param int $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function limit(string $sql, int $limit, ?int $offset=NULL): string;
|
public function limit(string $sql, int $limit, ?int $offset=NULL): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modify the query to get the query plan
|
* Modify the query to get the query plan
|
||||||
*
|
|
||||||
* @param string $sql
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function explain(string $sql): string;
|
public function explain(string $sql): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the sql for random ordering
|
* Get the sql for random ordering
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function random(): string;
|
public function random(): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list other databases
|
* Returns sql to list other databases
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function dbList(): string;
|
public function dbList(): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list tables
|
* Returns sql to list tables
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function tableList(): string;
|
public function tableList(): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list system tables
|
* Returns sql to list system tables
|
||||||
*
|
|
||||||
* @return string|array
|
|
||||||
*/
|
*/
|
||||||
public function systemTableList();
|
public function systemTableList(): string|array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list views
|
* Returns sql to list views
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function viewList(): string;
|
public function viewList(): string;
|
||||||
|
|
||||||
@ -103,34 +85,23 @@ interface SQLInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return sql to list database field types
|
* Return sql to list database field types
|
||||||
*
|
|
||||||
* @return string|array
|
|
||||||
*/
|
*/
|
||||||
public function typeList();
|
public function typeList(): string|array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get information about the columns in the
|
* Get information about the columns in the
|
||||||
* specified table
|
* specified table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function columnList(string $table): string;
|
public function columnList(string $table): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of foreign keys for the current
|
* Get the list of foreign keys for the current
|
||||||
* table
|
* table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function fkList(string $table): string;
|
public function fkList(string $table): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of indexes for the current table
|
* Get the list of indexes for the current table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function indexList(string $table): string;
|
public function indexList(string $table): string;
|
||||||
}
|
}
|
@ -29,21 +29,15 @@ class Driver extends AbstractDriver {
|
|||||||
/**
|
/**
|
||||||
* SQLite has a truncate optimization,
|
* SQLite has a truncate optimization,
|
||||||
* but no support for the actual keyword
|
* but no support for the actual keyword
|
||||||
* @var boolean
|
|
||||||
*/
|
*/
|
||||||
protected bool $hasTruncate = FALSE;
|
protected bool $hasTruncate = FALSE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open SQLite Database
|
* Open SQLite Database
|
||||||
*
|
|
||||||
* @param string $dsn
|
|
||||||
* @param string $user
|
|
||||||
* @param string $pass
|
|
||||||
* @param array $driverOptions
|
|
||||||
*/
|
*/
|
||||||
public function __construct(string $dsn, string $user=NULL, string $pass=NULL, array $driverOptions=[])
|
public function __construct(string $dsn, string $user=NULL, string $pass=NULL, array $driverOptions=[])
|
||||||
{
|
{
|
||||||
if (strpos($dsn, 'sqlite:') === FALSE)
|
if ( ! str_contains($dsn, 'sqlite:'))
|
||||||
{
|
{
|
||||||
$dsn = "sqlite:{$dsn}";
|
$dsn = "sqlite:{$dsn}";
|
||||||
}
|
}
|
||||||
@ -53,8 +47,6 @@ class Driver extends AbstractDriver {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return list of dbs for the current connection, if possible. Meaningless for SQLite.
|
* Return list of dbs for the current connection, if possible. Meaningless for SQLite.
|
||||||
*
|
|
||||||
* @return array | null
|
|
||||||
*/
|
*/
|
||||||
public function getDbs(): ?array
|
public function getDbs(): ?array
|
||||||
{
|
{
|
||||||
@ -64,7 +56,7 @@ class Driver extends AbstractDriver {
|
|||||||
/**
|
/**
|
||||||
* List tables for the current database
|
* List tables for the current database
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed[]
|
||||||
*/
|
*/
|
||||||
public function getTables(): array
|
public function getTables(): array
|
||||||
{
|
{
|
||||||
@ -76,10 +68,9 @@ class Driver extends AbstractDriver {
|
|||||||
/**
|
/**
|
||||||
* Retrieve foreign keys for the table
|
* Retrieve foreign keys for the table
|
||||||
*
|
*
|
||||||
* @param string $table
|
* @return array<int, array{child_column: mixed, parent_table: mixed, parent_column: mixed, update: mixed, delete: mixed}>
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function getFks($table): array
|
public function getFks(string $table): array
|
||||||
{
|
{
|
||||||
$returnRows = [];
|
$returnRows = [];
|
||||||
|
|
||||||
@ -101,9 +92,7 @@ class Driver extends AbstractDriver {
|
|||||||
* Create sql for batch insert
|
* Create sql for batch insert
|
||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
* @param string $table
|
* @return mixed[][]|string[]|null[]|string[]|null[]
|
||||||
* @param array $data
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function insertBatch(string $table, array $data=[]): array
|
public function insertBatch(string $table, array $data=[]): array
|
||||||
{
|
{
|
||||||
@ -148,10 +137,6 @@ class Driver extends AbstractDriver {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the returning clause for the current database
|
* Generate the returning clause for the current database
|
||||||
*
|
|
||||||
* @param string $query
|
|
||||||
* @param string $select
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function returning(string $query, string $select): string
|
public function returning(string $query, string $select): string
|
||||||
{
|
{
|
||||||
|
@ -25,9 +25,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the query plan for the sql query
|
* Get the query plan for the sql query
|
||||||
*
|
|
||||||
* @param string $sql
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function explain(string $sql): string
|
public function explain(string $sql): string
|
||||||
{
|
{
|
||||||
@ -36,8 +33,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Random ordering keyword
|
* Random ordering keyword
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function random(): string
|
public function random(): string
|
||||||
{
|
{
|
||||||
@ -47,8 +42,6 @@ class SQL extends AbstractSQL {
|
|||||||
/**
|
/**
|
||||||
* Returns sql to list other databases. Meaningless for SQLite, as this
|
* Returns sql to list other databases. Meaningless for SQLite, as this
|
||||||
* just returns the database(s) that we are currently connected to.
|
* just returns the database(s) that we are currently connected to.
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function dbList(): string
|
public function dbList(): string
|
||||||
{
|
{
|
||||||
@ -57,8 +50,6 @@ class SQL extends AbstractSQL {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list tables
|
* Returns sql to list tables
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function tableList(): string
|
public function tableList(): string
|
||||||
{
|
{
|
||||||
@ -89,8 +80,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list views
|
* Returns sql to list views
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function viewList(): string
|
public function viewList(): string
|
||||||
{
|
{
|
||||||
@ -101,8 +90,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sql to list triggers
|
* Returns sql to list triggers
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function triggerList(): string
|
public function triggerList(): string
|
||||||
{
|
{
|
||||||
@ -115,7 +102,6 @@ SQL;
|
|||||||
* Return sql to list functions
|
* Return sql to list functions
|
||||||
*
|
*
|
||||||
* @throws NotImplementedException
|
* @throws NotImplementedException
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function functionList(): string
|
public function functionList(): string
|
||||||
{
|
{
|
||||||
@ -126,7 +112,6 @@ SQL;
|
|||||||
* Return sql to list stored procedures
|
* Return sql to list stored procedures
|
||||||
*
|
*
|
||||||
* @throws NotImplementedException
|
* @throws NotImplementedException
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function procedureList(): string
|
public function procedureList(): string
|
||||||
{
|
{
|
||||||
@ -135,8 +120,6 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return sql to list sequences
|
* Return sql to list sequences
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function sequenceList(): string
|
public function sequenceList(): string
|
||||||
{
|
{
|
||||||
@ -155,42 +138,33 @@ SQL;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SQL to show information about columns in a table
|
* SQL to show information about columns in a table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function columnList(string $table): string
|
public function columnList(string $table): string
|
||||||
{
|
{
|
||||||
return <<<SQL
|
return <<<SQL
|
||||||
PRAGMA table_info("$table")
|
PRAGMA table_info("{$table}")
|
||||||
SQL;
|
SQL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of foreign keys for the current
|
* Get the list of foreign keys for the current
|
||||||
* table
|
* table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function fkList(string $table): string
|
public function fkList(string $table): string
|
||||||
{
|
{
|
||||||
return <<<SQL
|
return <<<SQL
|
||||||
PRAGMA foreign_key_list("$table")
|
PRAGMA foreign_key_list("{$table}")
|
||||||
SQL;
|
SQL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of indexes for the current table
|
* Get the list of indexes for the current table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function indexList(string $table): string
|
public function indexList(string $table): string
|
||||||
{
|
{
|
||||||
return <<<SQL
|
return <<<SQL
|
||||||
PRAGMA index_list("$table")
|
PRAGMA index_list("{$table}")
|
||||||
SQL;
|
SQL;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -25,9 +25,6 @@ class Util extends AbstractUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's data
|
* Create an SQL backup file for the current database's data
|
||||||
*
|
|
||||||
* @param array $excluded
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function backupData(array $excluded=[]): string
|
public function backupData(array $excluded=[]): string
|
||||||
{
|
{
|
||||||
@ -98,8 +95,6 @@ class Util extends AbstractUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an SQL backup file for the current database's structure
|
* Create an SQL backup file for the current database's structure
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function backupStructure(): string
|
public function backupStructure(): string
|
||||||
{
|
{
|
||||||
|
@ -19,9 +19,9 @@ namespace Query;
|
|||||||
* 'Enum' of join types
|
* 'Enum' of join types
|
||||||
*/
|
*/
|
||||||
class JoinType {
|
class JoinType {
|
||||||
public const CROSS = 'cross';
|
public final const CROSS = 'cross';
|
||||||
public const INNER = 'inner';
|
public final const INNER = 'inner';
|
||||||
public const OUTER = 'outer';
|
public final const OUTER = 'outer';
|
||||||
public const LEFT = 'left';
|
public final const LEFT = 'left';
|
||||||
public const RIGHT = 'right';
|
public final const RIGHT = 'right';
|
||||||
}
|
}
|
@ -19,7 +19,7 @@ namespace Query;
|
|||||||
* 'Enum' of join types
|
* 'Enum' of join types
|
||||||
*/
|
*/
|
||||||
class LikeType {
|
class LikeType {
|
||||||
public const BEFORE = 'before';
|
public final const BEFORE = 'before';
|
||||||
public const AFTER = 'after';
|
public final const AFTER = 'after';
|
||||||
public const BOTH = 'both';
|
public final const BOTH = 'both';
|
||||||
}
|
}
|
@ -19,10 +19,10 @@ namespace Query;
|
|||||||
* 'Enum' of query map types
|
* 'Enum' of query map types
|
||||||
*/
|
*/
|
||||||
class MapType {
|
class MapType {
|
||||||
public const GROUP_END = 'group_end';
|
public final const GROUP_END = 'group_end';
|
||||||
public const GROUP_START = 'group_start';
|
public final const GROUP_START = 'group_start';
|
||||||
public const JOIN = 'join';
|
public final const JOIN = 'join';
|
||||||
public const LIKE = 'like';
|
public final const LIKE = 'like';
|
||||||
public const WHERE = 'where';
|
public final const WHERE = 'where';
|
||||||
public const WHERE_IN = 'where_in';
|
public final const WHERE_IN = 'where_in';
|
||||||
}
|
}
|
@ -28,12 +28,8 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Select Queries
|
// ! Select Queries
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies rows to select in a query
|
* Specifies rows to select in a query
|
||||||
*
|
|
||||||
* @param string $fields
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function select(string $fields): self
|
public function select(string $fields): self
|
||||||
{
|
{
|
||||||
@ -46,7 +42,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
{
|
{
|
||||||
if (stripos($field, 'as') !== FALSE)
|
if (stripos($field, 'as') !== FALSE)
|
||||||
{
|
{
|
||||||
$fieldsArray[$key] = preg_split('` as `i', $field);
|
$fieldsArray[$key] = preg_split('` as `i', (string) $field);
|
||||||
$fieldsArray[$key] = array_map('mb_trim', $fieldsArray[$key]);
|
$fieldsArray[$key] = array_map('mb_trim', $fieldsArray[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -73,9 +69,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Selects the maximum value of a field from a query
|
* Selects the maximum value of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectMax(string $field, $as=FALSE): self
|
public function selectMax(string $field, $as=FALSE): self
|
||||||
{
|
{
|
||||||
@ -87,9 +81,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Selects the minimum value of a field from a query
|
* Selects the minimum value of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectMin(string $field, $as=FALSE): self
|
public function selectMin(string $field, $as=FALSE): self
|
||||||
{
|
{
|
||||||
@ -101,9 +93,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Selects the average value of a field from a query
|
* Selects the average value of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectAvg(string $field, $as=FALSE): self
|
public function selectAvg(string $field, $as=FALSE): self
|
||||||
{
|
{
|
||||||
@ -115,9 +105,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Selects the sum of a field from a query
|
* Selects the sum of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectSum(string $field, $as=FALSE): self
|
public function selectSum(string $field, $as=FALSE): self
|
||||||
{
|
{
|
||||||
@ -129,7 +117,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Add a 'returning' clause to an insert,update, or delete query
|
* Add a 'returning' clause to an insert,update, or delete query
|
||||||
*
|
*
|
||||||
* @param string $fields
|
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function returning(string $fields = ''): self
|
public function returning(string $fields = ''): self
|
||||||
@ -147,8 +134,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the 'distinct' keyword to a query
|
* Adds the 'distinct' keyword to a query
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function distinct(): self
|
public function distinct(): self
|
||||||
{
|
{
|
||||||
@ -159,8 +144,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Tell the database to give you the query plan instead of result set
|
* Tell the database to give you the query plan instead of result set
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function explain(): self
|
public function explain(): self
|
||||||
{
|
{
|
||||||
@ -174,7 +157,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
* Alias of `from` method to better match CodeIgniter 4
|
* Alias of `from` method to better match CodeIgniter 4
|
||||||
*
|
*
|
||||||
* @param string $tableName
|
* @param string $tableName
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function table(string $tableName): self
|
public function table(string $tableName): self
|
||||||
{
|
{
|
||||||
@ -183,9 +165,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify the database table to select from
|
* Specify the database table to select from
|
||||||
*
|
|
||||||
* @param string $tableName
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function from(string $tableName): self
|
public function from(string $tableName): self
|
||||||
{
|
{
|
||||||
@ -206,14 +185,10 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! 'Like' methods
|
// ! 'Like' methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a Like clause in the sql statement
|
* Creates a Like clause in the sql statement
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function like(string $field, $val, string $pos=LikeType::BOTH): self
|
public function like(string $field, $val, string $pos=LikeType::BOTH): self
|
||||||
{
|
{
|
||||||
@ -223,10 +198,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Generates an OR Like clause
|
* Generates an OR Like clause
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orLike(string $field, $val, string $pos=LikeType::BOTH): self
|
public function orLike(string $field, $val, string $pos=LikeType::BOTH): self
|
||||||
{
|
{
|
||||||
@ -236,10 +208,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Generates a NOT LIKE clause
|
* Generates a NOT LIKE clause
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function notLike(string $field, $val, string $pos=LikeType::BOTH): self
|
public function notLike(string $field, $val, string $pos=LikeType::BOTH): self
|
||||||
{
|
{
|
||||||
@ -249,10 +218,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Generates a OR NOT LIKE clause
|
* Generates a OR NOT LIKE clause
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orNotLike(string $field, $val, string $pos=LikeType::BOTH): self
|
public function orNotLike(string $field, $val, string $pos=LikeType::BOTH): self
|
||||||
{
|
{
|
||||||
@ -262,13 +228,11 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Having methods
|
// ! Having methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a 'Having' clause
|
* Generates a 'Having' clause
|
||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function having($key, $val=[]): self
|
public function having($key, $val=[]): self
|
||||||
{
|
{
|
||||||
@ -280,7 +244,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orHaving($key, $val=[]): self
|
public function orHaving($key, $val=[]): self
|
||||||
{
|
{
|
||||||
@ -290,7 +253,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! 'Where' methods
|
// ! 'Where' methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify condition(s) in the where clause of a query
|
* Specify condition(s) in the where clause of a query
|
||||||
* Note: this function works with key / value, or a
|
* Note: this function works with key / value, or a
|
||||||
@ -299,7 +261,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param mixed $escape
|
* @param mixed $escape
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function where($key, $val=[], $escape=NULL): self
|
public function where($key, $val=[], $escape=NULL): self
|
||||||
{
|
{
|
||||||
@ -311,7 +272,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $key
|
* @param string $key
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orWhere($key, $val=[]): self
|
public function orWhere($key, $val=[]): self
|
||||||
{
|
{
|
||||||
@ -323,7 +283,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param mixed $field
|
* @param mixed $field
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function whereIn($field, $val=[]): self
|
public function whereIn($field, $val=[]): self
|
||||||
{
|
{
|
||||||
@ -335,7 +294,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $field
|
* @param string $field
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orWhereIn($field, $val=[]): self
|
public function orWhereIn($field, $val=[]): self
|
||||||
{
|
{
|
||||||
@ -347,7 +305,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $field
|
* @param string $field
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function whereNotIn($field, $val=[]): self
|
public function whereNotIn($field, $val=[]): self
|
||||||
{
|
{
|
||||||
@ -359,7 +316,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $field
|
* @param string $field
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orWhereNotIn($field, $val=[]): self
|
public function orWhereNotIn($field, $val=[]): self
|
||||||
{
|
{
|
||||||
@ -369,24 +325,15 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Other Query Modifier methods
|
// ! Other Query Modifier methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets values for inserts / updates / deletes
|
* Sets values for inserts / updates / deletes
|
||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function set($key, $val = NULL): self
|
public function set($key, $val = NULL): self
|
||||||
{
|
{
|
||||||
if (is_scalar($key))
|
$pairs = is_scalar($key) ? [$key => $val] : $key;
|
||||||
{
|
|
||||||
$pairs = [$key => $val];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$pairs = $key;
|
|
||||||
}
|
|
||||||
|
|
||||||
$keys = array_keys($pairs);
|
$keys = array_keys($pairs);
|
||||||
$values = array_values($pairs);
|
$values = array_values($pairs);
|
||||||
@ -411,11 +358,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a join phrase in a compiled query
|
* Creates a join phrase in a compiled query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param string $condition
|
|
||||||
* @param string $type
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function join(string $table, string $condition, string $type=''): self
|
public function join(string $table, string $condition, string $type=''): self
|
||||||
{
|
{
|
||||||
@ -438,7 +380,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
* Group the results by the selected field(s)
|
* Group the results by the selected field(s)
|
||||||
*
|
*
|
||||||
* @param mixed $field
|
* @param mixed $field
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function groupBy($field): self
|
public function groupBy($field): self
|
||||||
{
|
{
|
||||||
@ -462,10 +403,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Order the results by the selected field(s)
|
* Order the results by the selected field(s)
|
||||||
*
|
|
||||||
* @param string $field
|
|
||||||
* @param string $type
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orderBy(string $field, string $type=''): self
|
public function orderBy(string $field, string $type=''): self
|
||||||
{
|
{
|
||||||
@ -490,9 +427,9 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the final string
|
// Set the final string
|
||||||
$orderString = ! isset($rand)
|
$orderString = isset($rand)
|
||||||
? "\nORDER BY ".implode(', ', $orderClauses)
|
? "\nORDER BY".$rand
|
||||||
: "\nORDER BY".$rand;
|
: "\nORDER BY ".implode(', ', $orderClauses);
|
||||||
|
|
||||||
$this->state->setOrderString($orderString);
|
$this->state->setOrderString($orderString);
|
||||||
|
|
||||||
@ -501,10 +438,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a limit on the current sql statement
|
* Set a limit on the current sql statement
|
||||||
*
|
|
||||||
* @param int $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function limit(int $limit, ?int $offset=NULL): self
|
public function limit(int $limit, ?int $offset=NULL): self
|
||||||
{
|
{
|
||||||
@ -517,11 +450,8 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Query Grouping Methods
|
// ! Query Grouping Methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping
|
* Adds a paren to the current query for query grouping
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function groupStart(): self
|
public function groupStart(): self
|
||||||
{
|
{
|
||||||
@ -535,8 +465,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping,
|
* Adds a paren to the current query for query grouping,
|
||||||
* prefixed with 'NOT'
|
* prefixed with 'NOT'
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function notGroupStart(): self
|
public function notGroupStart(): self
|
||||||
{
|
{
|
||||||
@ -550,8 +478,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping,
|
* Adds a paren to the current query for query grouping,
|
||||||
* prefixed with 'OR'
|
* prefixed with 'OR'
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orGroupStart(): self
|
public function orGroupStart(): self
|
||||||
{
|
{
|
||||||
@ -563,8 +489,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping,
|
* Adds a paren to the current query for query grouping,
|
||||||
* prefixed with 'OR NOT'
|
* prefixed with 'OR NOT'
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orNotGroupStart(): self
|
public function orNotGroupStart(): self
|
||||||
{
|
{
|
||||||
@ -575,8 +499,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Ends a query group
|
* Ends a query group
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function groupEnd(): self
|
public function groupEnd(): self
|
||||||
{
|
{
|
||||||
@ -588,15 +510,9 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Query execution methods
|
// ! Query execution methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Select and retrieve all records from the current table, and/or
|
* Select and retrieve all records from the current table, and/or
|
||||||
* execute current compiled query
|
* execute current compiled query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param int|null $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function get(string $table='', ?int $limit=NULL, ?int $offset=NULL): PDOStatement
|
public function get(string $table='', ?int $limit=NULL, ?int $offset=NULL): PDOStatement
|
||||||
{
|
{
|
||||||
@ -618,11 +534,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Convenience method for get() with a where clause
|
* Convenience method for get() with a where clause
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $where
|
* @param mixed $where
|
||||||
* @param int|null $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function getWhere(string $table, $where=[], ?int $limit=NULL, ?int $offset=NULL): PDOStatement
|
public function getWhere(string $table, $where=[], ?int $limit=NULL, ?int $offset=NULL): PDOStatement
|
||||||
{
|
{
|
||||||
@ -635,24 +547,17 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the number of rows in the selected table
|
* Retrieve the number of rows in the selected table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function countAll(string $table): int
|
public function countAll(string $table): int
|
||||||
{
|
{
|
||||||
$sql = 'SELECT * FROM '.$this->driver->quoteTable($table);
|
$sql = 'SELECT * FROM '.$this->driver->quoteTable($table);
|
||||||
$res = $this->driver->query($sql);
|
$res = $this->driver->query($sql);
|
||||||
return (int) count($res->fetchAll());
|
return (int) (is_countable($res->fetchAll()) ? count($res->fetchAll()) : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the number of results for the generated query - used
|
* Retrieve the number of results for the generated query - used
|
||||||
* in place of the get() method
|
* in place of the get() method
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param boolean $reset
|
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function countAllResults(string $table='', bool $reset = TRUE): int
|
public function countAllResults(string $table='', bool $reset = TRUE): int
|
||||||
{
|
{
|
||||||
@ -671,9 +576,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Creates an insert clause, and executes it
|
* Creates an insert clause, and executes it
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $data
|
* @param mixed $data
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function insert(string $table, $data=[]): PDOStatement
|
public function insert(string $table, $data=[]): PDOStatement
|
||||||
{
|
{
|
||||||
@ -688,7 +591,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Creates and executes a batch insertion query
|
* Creates and executes a batch insertion query
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return PDOStatement
|
* @return PDOStatement
|
||||||
*/
|
*/
|
||||||
@ -705,9 +607,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Creates an update clause, and executes it
|
* Creates an update clause, and executes it
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $data
|
* @param mixed $data
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function update(string $table, $data=[]): PDOStatement
|
public function update(string $table, $data=[]): PDOStatement
|
||||||
{
|
{
|
||||||
@ -722,11 +622,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Creates a batch update, and executes it.
|
* Creates a batch update, and executes it.
|
||||||
* Returns the number of affected rows
|
* Returns the number of affected rows
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param array $data
|
|
||||||
* @param string $where
|
|
||||||
* @return int|null
|
|
||||||
*/
|
*/
|
||||||
public function updateBatch(string $table, array $data, string $where): ?int
|
public function updateBatch(string $table, array $data, string $where): ?int
|
||||||
{
|
{
|
||||||
@ -745,9 +640,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
/**
|
/**
|
||||||
* Deletes data from a table
|
* Deletes data from a table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $where
|
* @param mixed $where
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function delete(string $table, $where=''): PDOStatement
|
public function delete(string $table, $where=''): PDOStatement
|
||||||
{
|
{
|
||||||
@ -763,13 +656,8 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! SQL Returning Methods
|
// ! SQL Returning Methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'select' sql query
|
* Returns the generated 'select' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledSelect(string $table='', bool $reset=TRUE): string
|
public function getCompiledSelect(string $table='', bool $reset=TRUE): string
|
||||||
{
|
{
|
||||||
@ -784,10 +672,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'insert' sql query
|
* Returns the generated 'insert' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledInsert(string $table, bool $reset=TRUE): string
|
public function getCompiledInsert(string $table, bool $reset=TRUE): string
|
||||||
{
|
{
|
||||||
@ -796,10 +680,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'update' sql query
|
* Returns the generated 'update' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledUpdate(string $table='', bool $reset=TRUE): string
|
public function getCompiledUpdate(string $table='', bool $reset=TRUE): string
|
||||||
{
|
{
|
||||||
@ -808,10 +688,6 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'delete' sql query
|
* Returns the generated 'delete' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledDelete(string $table='', bool $reset=TRUE): string
|
public function getCompiledDelete(string $table='', bool $reset=TRUE): string
|
||||||
{
|
{
|
||||||
|
@ -63,13 +63,11 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience property for connection management
|
* Convenience property for connection management
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
public string $connName = '';
|
public string $connName = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of queries executed
|
* List of queries executed
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
public array $queries = [
|
public array $queries = [
|
||||||
'total_time' => 0
|
'total_time' => 0
|
||||||
@ -77,50 +75,27 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether to do only an explain on the query
|
* Whether to do only an explain on the query
|
||||||
* @var bool
|
|
||||||
*/
|
*/
|
||||||
protected bool $explain = FALSE;
|
protected bool $explain = FALSE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether to return data from a modification query
|
* Whether to return data from a modification query
|
||||||
* @var bool
|
|
||||||
*/
|
*/
|
||||||
protected bool $returning = FALSE;
|
protected bool $returning = FALSE;
|
||||||
|
|
||||||
/**
|
|
||||||
* The current database driver
|
|
||||||
* @var DriverInterface
|
|
||||||
*/
|
|
||||||
protected ?DriverInterface $driver;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Query parser class instance
|
|
||||||
* @var QueryParser
|
|
||||||
*/
|
|
||||||
protected QueryParser $parser;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query Builder state
|
* Query Builder state
|
||||||
* @var State
|
|
||||||
*/
|
*/
|
||||||
protected State $state;
|
protected State $state;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Methods
|
// ! Methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
|
||||||
* @param DriverInterface $driver
|
|
||||||
* @param QueryParser $parser
|
|
||||||
*/
|
*/
|
||||||
public function __construct(DriverInterface $driver, QueryParser $parser)
|
public function __construct(protected ?\Query\Drivers\DriverInterface $driver, protected QueryParser $parser)
|
||||||
{
|
{
|
||||||
// Inject driver and parser
|
|
||||||
$this->driver = $driver;
|
|
||||||
$this->parser = $parser;
|
|
||||||
|
|
||||||
// Create new State object
|
// Create new State object
|
||||||
$this->state = new State();
|
$this->state = new State();
|
||||||
}
|
}
|
||||||
@ -138,8 +113,6 @@ class QueryBuilderBase {
|
|||||||
* Calls a function further down the inheritance chain.
|
* Calls a function further down the inheritance chain.
|
||||||
* 'Implements' methods on the driver object
|
* 'Implements' methods on the driver object
|
||||||
*
|
*
|
||||||
* @param string $name
|
|
||||||
* @param array $params
|
|
||||||
* @return mixed
|
* @return mixed
|
||||||
* @throws BadMethodCallException
|
* @throws BadMethodCallException
|
||||||
*/
|
*/
|
||||||
@ -155,8 +128,6 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear out the class variables, so the next query can be run
|
* Clear out the class variables, so the next query can be run
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function resetQuery(): void
|
public function resetQuery(): void
|
||||||
{
|
{
|
||||||
@ -168,9 +139,7 @@ class QueryBuilderBase {
|
|||||||
/**
|
/**
|
||||||
* Method to simplify select_ methods
|
* Method to simplify select_ methods
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
protected function _select(string $field, $as = FALSE): string
|
protected function _select(string $field, $as = FALSE): string
|
||||||
{
|
{
|
||||||
@ -190,11 +159,6 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function for returning sql strings
|
* Helper function for returning sql strings
|
||||||
*
|
|
||||||
* @param string $type
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
protected function _getCompile(string $type, string $table, bool $reset): string
|
protected function _getCompile(string $type, string $table, bool $reset): string
|
||||||
{
|
{
|
||||||
@ -212,12 +176,7 @@ class QueryBuilderBase {
|
|||||||
/**
|
/**
|
||||||
* Simplify 'like' methods
|
* Simplify 'like' methods
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param string $pos
|
|
||||||
* @param string $like
|
|
||||||
* @param string $conj
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
protected function _like(string $field, $val, string $pos, string $like = 'LIKE', string $conj = 'AND'): self
|
protected function _like(string $field, $val, string $pos, string $like = 'LIKE', string $conj = 'AND'): self
|
||||||
{
|
{
|
||||||
@ -253,8 +212,6 @@ class QueryBuilderBase {
|
|||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @param string $conj
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
protected function _having($key, $values = [], string $conj = 'AND'): self
|
protected function _having($key, $values = [], string $conj = 'AND'): self
|
||||||
{
|
{
|
||||||
@ -289,7 +246,6 @@ class QueryBuilderBase {
|
|||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
protected function _where($key, $val = []): array
|
protected function _where($key, $val = []): array
|
||||||
{
|
{
|
||||||
@ -318,8 +274,6 @@ class QueryBuilderBase {
|
|||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @param string $defaultConj
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
protected function _whereString($key, $values = [], string $defaultConj = 'AND'): self
|
protected function _whereString($key, $values = [], string $defaultConj = 'AND'): self
|
||||||
{
|
{
|
||||||
@ -364,12 +318,11 @@ class QueryBuilderBase {
|
|||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @param string $in - The (not) in fragment
|
* @param string $in - The (not) in fragment
|
||||||
* @param string $conj - The where in conjunction
|
* @param string $conj - The where in conjunction
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
protected function _whereIn($key, $val = [], string $in = 'IN', string $conj = 'AND'): self
|
protected function _whereIn($key, $val = [], string $in = 'IN', string $conj = 'AND'): self
|
||||||
{
|
{
|
||||||
$key = $this->driver->quoteIdent($key);
|
$key = $this->driver->quoteIdent($key);
|
||||||
$params = array_fill(0, count($val), '?');
|
$params = array_fill(0, is_countable($val) ? count($val) : 0, '?');
|
||||||
$this->state->appendWhereValues($val);
|
$this->state->appendWhereValues($val);
|
||||||
|
|
||||||
$conjunction = empty($this->state->getQueryMap()) ? ' WHERE ' : " {$conj} ";
|
$conjunction = empty($this->state->getQueryMap()) ? ' WHERE ' : " {$conj} ";
|
||||||
@ -383,12 +336,7 @@ class QueryBuilderBase {
|
|||||||
/**
|
/**
|
||||||
* Executes the compiled query
|
* Executes the compiled query
|
||||||
*
|
*
|
||||||
* @param string $type
|
|
||||||
* @param string $table
|
|
||||||
* @param string $sql
|
|
||||||
* @param array|null $vals
|
* @param array|null $vals
|
||||||
* @param boolean $reset
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
protected function _run(string $type, string $table, string $sql = NULL, array $vals = NULL, bool $reset = TRUE): PDOStatement
|
protected function _run(string $type, string $table, string $sql = NULL, array $vals = NULL, bool $reset = TRUE): PDOStatement
|
||||||
{
|
{
|
||||||
@ -425,11 +373,6 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert the prepared statement into readable sql
|
* Convert the prepared statement into readable sql
|
||||||
*
|
|
||||||
* @param array $values
|
|
||||||
* @param string $sql
|
|
||||||
* @param int $totalTime
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
protected function _appendQuery(array $values, string $sql, int $totalTime): void
|
protected function _appendQuery(array $values, string $sql, int $totalTime): void
|
||||||
{
|
{
|
||||||
@ -439,9 +382,9 @@ class QueryBuilderBase {
|
|||||||
// Quote string values
|
// Quote string values
|
||||||
foreach ($evals as &$v)
|
foreach ($evals as &$v)
|
||||||
{
|
{
|
||||||
$v = ( ! is_numeric($v))
|
$v = ( is_numeric($v))
|
||||||
? htmlentities($this->driver->quote($v), ENT_NOQUOTES, 'utf-8')
|
? $v
|
||||||
: $v;
|
: htmlentities($this->driver->quote($v), ENT_NOQUOTES, 'utf-8');
|
||||||
}
|
}
|
||||||
unset($v);
|
unset($v);
|
||||||
|
|
||||||
@ -465,9 +408,6 @@ class QueryBuilderBase {
|
|||||||
* Sub-method for generating sql strings
|
* Sub-method for generating sql strings
|
||||||
*
|
*
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
* @param string $type
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
protected function _compileType(string $type = QueryType::SELECT, string $table = ''): string
|
protected function _compileType(string $type = QueryType::SELECT, string $table = ''): string
|
||||||
{
|
{
|
||||||
@ -475,7 +415,7 @@ class QueryBuilderBase {
|
|||||||
switch ($type)
|
switch ($type)
|
||||||
{
|
{
|
||||||
case QueryType::INSERT:
|
case QueryType::INSERT:
|
||||||
$paramCount = count($setArrayKeys);
|
$paramCount = is_countable($setArrayKeys) ? count($setArrayKeys) : 0;
|
||||||
$params = array_fill(0, $paramCount, '?');
|
$params = array_fill(0, $paramCount, '?');
|
||||||
$sql = "INSERT INTO {$table} ("
|
$sql = "INSERT INTO {$table} ("
|
||||||
. implode(',', $setArrayKeys)
|
. implode(',', $setArrayKeys)
|
||||||
@ -512,10 +452,6 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* String together the sql statements for sending to the db
|
* String together the sql statements for sending to the db
|
||||||
*
|
|
||||||
* @param string $type
|
|
||||||
* @param string $table
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
protected function _compile(string $type = '', string $table = ''): string
|
protected function _compile(string $type = '', string $table = ''): string
|
||||||
{
|
{
|
||||||
@ -568,10 +504,6 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate returning clause of query
|
* Generate returning clause of query
|
||||||
*
|
|
||||||
* @param string $sql
|
|
||||||
* @param string $type
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
protected function _compileReturning(string $sql, string $type): string
|
protected function _compileReturning(string $sql, string $type): string
|
||||||
{
|
{
|
||||||
@ -597,8 +529,6 @@ class QueryBuilderBase {
|
|||||||
switch ($type)
|
switch ($type)
|
||||||
{
|
{
|
||||||
case QueryType::INSERT:
|
case QueryType::INSERT:
|
||||||
// @TODO figure out a good response for insert query
|
|
||||||
break;
|
|
||||||
|
|
||||||
case QueryType::UPDATE:
|
case QueryType::UPDATE:
|
||||||
// @TODO figure out a good response for update query
|
// @TODO figure out a good response for update query
|
||||||
@ -606,8 +536,6 @@ class QueryBuilderBase {
|
|||||||
|
|
||||||
case QueryType::INSERT_BATCH:
|
case QueryType::INSERT_BATCH:
|
||||||
case QueryType::UPDATE_BATCH:
|
case QueryType::UPDATE_BATCH:
|
||||||
// @TODO figure out a good response for batch queries
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// On Delete queries, what would we return?
|
// On Delete queries, what would we return?
|
||||||
|
@ -62,62 +62,46 @@ interface QueryBuilderInterface {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Select Queries
|
// ! Select Queries
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies rows to select in a query
|
* Specifies rows to select in a query
|
||||||
*
|
|
||||||
* @param string $fields
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function select(string $fields): self;
|
public function select(string $fields): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects the maximum value of a field from a query
|
* Selects the maximum value of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectMax(string $field, $as=FALSE): self;
|
public function selectMax(string $field, $as=FALSE): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects the minimum value of a field from a query
|
* Selects the minimum value of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectMin(string $field, $as=FALSE): self;
|
public function selectMin(string $field, $as=FALSE): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects the average value of a field from a query
|
* Selects the average value of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectAvg(string $field, $as=FALSE): self;
|
public function selectAvg(string $field, $as=FALSE): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects the sum of a field from a query
|
* Selects the sum of a field from a query
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param string|bool $as
|
* @param string|bool $as
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function selectSum(string $field, $as=FALSE): self;
|
public function selectSum(string $field, $as=FALSE): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the 'distinct' keyword to a query
|
* Adds the 'distinct' keyword to a query
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function distinct(): self;
|
public function distinct(): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows the query plan for the query
|
* Shows the query plan for the query
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function explain(): self;
|
public function explain(): self;
|
||||||
|
|
||||||
@ -127,72 +111,53 @@ interface QueryBuilderInterface {
|
|||||||
* Alias of `from` method to better match CodeIgniter 4
|
* Alias of `from` method to better match CodeIgniter 4
|
||||||
*
|
*
|
||||||
* @param string $tableName
|
* @param string $tableName
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function table(string $tableName): self;
|
public function table(string $tableName): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify the database table to select from
|
* Specify the database table to select from
|
||||||
*
|
|
||||||
* @param string $tableName
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function from(string $tableName): self;
|
public function from(string $tableName): self;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! 'Like' methods
|
// ! 'Like' methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a Like clause in the sql statement
|
* Creates a Like clause in the sql statement
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function like(string $field, $values, string $pos=LikeType::BOTH): self;
|
public function like(string $field, $values, string $pos=LikeType::BOTH): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates an OR Like clause
|
* Generates an OR Like clause
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orLike(string $field, $values, string $pos=LikeType::BOTH): self;
|
public function orLike(string $field, $values, string $pos=LikeType::BOTH): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a NOT LIKE clause
|
* Generates a NOT LIKE clause
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function notLike(string $field, $values, string $pos=LikeType::BOTH): self;
|
public function notLike(string $field, $values, string $pos=LikeType::BOTH): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a OR NOT LIKE clause
|
* Generates a OR NOT LIKE clause
|
||||||
*
|
*
|
||||||
* @param string $field
|
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @param string $pos
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orNotLike(string $field, $values, string $pos=LikeType::BOTH): self;
|
public function orNotLike(string $field, $values, string $pos=LikeType::BOTH): self;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Having methods
|
// ! Having methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a 'Having' clause
|
* Generates a 'Having' clause
|
||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function having($key, $values=[]): self;
|
public function having($key, $values=[]): self;
|
||||||
|
|
||||||
@ -201,14 +166,12 @@ interface QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orHaving($key, $values=[]): self;
|
public function orHaving($key, $values=[]): self;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! 'Where' methods
|
// ! 'Where' methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify condition(s) in the where clause of a query
|
* Specify condition(s) in the where clause of a query
|
||||||
* Note: this function works with key / value, or a
|
* Note: this function works with key / value, or a
|
||||||
@ -217,7 +180,6 @@ interface QueryBuilderInterface {
|
|||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @param bool $escape
|
* @param bool $escape
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function where($key, $values=[], $escape = NULL): self;
|
public function where($key, $values=[], $escape = NULL): self;
|
||||||
|
|
||||||
@ -226,7 +188,6 @@ interface QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $key
|
* @param string $key
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orWhere($key, $values=[]): self;
|
public function orWhere($key, $values=[]): self;
|
||||||
|
|
||||||
@ -235,7 +196,6 @@ interface QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param mixed $field
|
* @param mixed $field
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function whereIn($field, $values=[]): self;
|
public function whereIn($field, $values=[]): self;
|
||||||
|
|
||||||
@ -244,7 +204,6 @@ interface QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $field
|
* @param string $field
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orWhereIn($field, $values=[]): self;
|
public function orWhereIn($field, $values=[]): self;
|
||||||
|
|
||||||
@ -253,7 +212,6 @@ interface QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $field
|
* @param string $field
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function whereNotIn($field, $values=[]): self;
|
public function whereNotIn($field, $values=[]): self;
|
||||||
|
|
||||||
@ -262,30 +220,22 @@ interface QueryBuilderInterface {
|
|||||||
*
|
*
|
||||||
* @param string $field
|
* @param string $field
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orWhereNotIn($field, $values=[]): self;
|
public function orWhereNotIn($field, $values=[]): self;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Other Query Modifier methods
|
// ! Other Query Modifier methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets values for inserts / updates / deletes
|
* Sets values for inserts / updates / deletes
|
||||||
*
|
*
|
||||||
* @param mixed $key
|
* @param mixed $key
|
||||||
* @param mixed $values
|
* @param mixed $values
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function set($key, $values = NULL): self;
|
public function set($key, $values = NULL): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a join phrase in a compiled query
|
* Creates a join phrase in a compiled query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param string $condition
|
|
||||||
* @param string $type
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function join(string $table, string $condition, string $type=JoinType::INNER): self;
|
public function join(string $table, string $condition, string $type=JoinType::INNER): self;
|
||||||
|
|
||||||
@ -293,101 +243,68 @@ interface QueryBuilderInterface {
|
|||||||
* Group the results by the selected field(s)
|
* Group the results by the selected field(s)
|
||||||
*
|
*
|
||||||
* @param mixed $field
|
* @param mixed $field
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function groupBy($field): self;
|
public function groupBy($field): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Order the results by the selected field(s)
|
* Order the results by the selected field(s)
|
||||||
*
|
|
||||||
* @param string $field
|
|
||||||
* @param string $type
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orderBy(string $field, string $type=''): self;
|
public function orderBy(string $field, string $type=''): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a limit on the current sql statement
|
* Set a limit on the current sql statement
|
||||||
*
|
|
||||||
* @param int $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function limit(int $limit, ?int $offset=NULL): self;
|
public function limit(int $limit, ?int $offset=NULL): self;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Query Grouping Methods
|
// ! Query Grouping Methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping
|
* Adds a paren to the current query for query grouping
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function groupStart(): self;
|
public function groupStart(): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping,
|
* Adds a paren to the current query for query grouping,
|
||||||
* prefixed with 'NOT'
|
* prefixed with 'NOT'
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function notGroupStart(): self;
|
public function notGroupStart(): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping,
|
* Adds a paren to the current query for query grouping,
|
||||||
* prefixed with 'OR'
|
* prefixed with 'OR'
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orGroupStart(): self;
|
public function orGroupStart(): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a paren to the current query for query grouping,
|
* Adds a paren to the current query for query grouping,
|
||||||
* prefixed with 'OR NOT'
|
* prefixed with 'OR NOT'
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function orNotGroupStart(): self;
|
public function orNotGroupStart(): self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ends a query group
|
* Ends a query group
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
*/
|
||||||
public function groupEnd(): self;
|
public function groupEnd(): self;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Query execution methods
|
// ! Query execution methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Select and retrieve all records from the current table, and/or
|
* Select and retrieve all records from the current table, and/or
|
||||||
* execute current compiled query
|
* execute current compiled query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param int|null $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function get(string $table='', ?int $limit=NULL, ?int $offset=NULL): PDOStatement;
|
public function get(string $table='', ?int $limit=NULL, ?int $offset=NULL): PDOStatement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience method for get() with a where clause
|
* Convenience method for get() with a where clause
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param array $where
|
* @param array $where
|
||||||
* @param int|null $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function getWhere(string $table, $where=[], ?int $limit=NULL, ?int $offset=NULL): PDOStatement;
|
public function getWhere(string $table, $where=[], ?int $limit=NULL, ?int $offset=NULL): PDOStatement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the number of rows in the selected table
|
* Retrieve the number of rows in the selected table
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function countAll(string $table): int;
|
public function countAll(string $table): int;
|
||||||
|
|
||||||
@ -395,36 +312,28 @@ interface QueryBuilderInterface {
|
|||||||
* Retrieve the number of results for the generated query - used
|
* Retrieve the number of results for the generated query - used
|
||||||
* in place of the get() method
|
* in place of the get() method
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset - Whether to keep the query after counting the results
|
* @param bool $reset - Whether to keep the query after counting the results
|
||||||
* @return int
|
|
||||||
*/
|
*/
|
||||||
public function countAllResults(string $table='', bool $reset=TRUE): int;
|
public function countAllResults(string $table='', bool $reset=TRUE): int;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an insert clause, and executes it
|
* Creates an insert clause, and executes it
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $data
|
* @param mixed $data
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function insert(string $table, $data=[]): PDOStatement;
|
public function insert(string $table, $data=[]): PDOStatement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates and executes a batch insertion query
|
* Creates and executes a batch insertion query
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return PDOStatement | null
|
|
||||||
*/
|
*/
|
||||||
public function insertBatch(string $table, $data=[]): ?PDOStatement;
|
public function insertBatch(string $table, $data=[]): ?PDOStatement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an update clause, and executes it
|
* Creates an update clause, and executes it
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $data
|
* @param mixed $data
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function update(string $table, $data=[]): PDOStatement;
|
public function update(string $table, $data=[]): PDOStatement;
|
||||||
|
|
||||||
@ -435,67 +344,44 @@ interface QueryBuilderInterface {
|
|||||||
* @param string $table The table to update
|
* @param string $table The table to update
|
||||||
* @param array $data an array of update values
|
* @param array $data an array of update values
|
||||||
* @param string $where The where key
|
* @param string $where The where key
|
||||||
* @return int|null
|
|
||||||
*/
|
*/
|
||||||
public function updateBatch(string $table, array $data, string $where): ?int;
|
public function updateBatch(string $table, array $data, string $where): ?int;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes data from a table
|
* Deletes data from a table
|
||||||
*
|
*
|
||||||
* @param string $table
|
|
||||||
* @param mixed $where
|
* @param mixed $where
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
*/
|
||||||
public function delete(string $table, $where=''): PDOStatement;
|
public function delete(string $table, $where=''): PDOStatement;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! SQL Returning Methods
|
// ! SQL Returning Methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'select' sql query
|
* Returns the generated 'select' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledSelect(string $table='', bool $reset=TRUE): string;
|
public function getCompiledSelect(string $table='', bool $reset=TRUE): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'insert' sql query
|
* Returns the generated 'insert' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledInsert(string $table, bool $reset=TRUE): string;
|
public function getCompiledInsert(string $table, bool $reset=TRUE): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'update' sql query
|
* Returns the generated 'update' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledUpdate(string $table='', bool $reset=TRUE): string;
|
public function getCompiledUpdate(string $table='', bool $reset=TRUE): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the generated 'delete' sql query
|
* Returns the generated 'delete' sql query
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param bool $reset
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getCompiledDelete(string $table='', bool $reset=TRUE): string;
|
public function getCompiledDelete(string $table='', bool $reset=TRUE): string;
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Miscellaneous Methods
|
// ! Miscellaneous Methods
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear out the class variables, so the next query can be run
|
* Clear out the class variables, so the next query can be run
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function resetQuery(): void;
|
public function resetQuery(): void;
|
||||||
}
|
}
|
||||||
|
@ -22,17 +22,8 @@ use Query\Drivers\DriverInterface;
|
|||||||
*/
|
*/
|
||||||
class QueryParser {
|
class QueryParser {
|
||||||
|
|
||||||
/**
|
|
||||||
* DB Driver
|
|
||||||
*
|
|
||||||
* @var DriverInterface
|
|
||||||
*/
|
|
||||||
private DriverInterface $db;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Regex patterns for various syntax components
|
* Regex patterns for various syntax components
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
private array $matchPatterns = [
|
private array $matchPatterns = [
|
||||||
'function' => '([a-zA-Z0-9_]+\((.*?)\))',
|
'function' => '([a-zA-Z0-9_]+\((.*?)\))',
|
||||||
@ -42,8 +33,6 @@ class QueryParser {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Regex matches
|
* Regex matches
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
public array $matches = [
|
public array $matches = [
|
||||||
'functions' => [],
|
'functions' => [],
|
||||||
@ -54,19 +43,15 @@ class QueryParser {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor/entry point into parser
|
* Constructor/entry point into parser
|
||||||
*
|
|
||||||
* @param DriverInterface $db
|
|
||||||
*/
|
*/
|
||||||
public function __construct(DriverInterface $db)
|
public function __construct(private DriverInterface $db)
|
||||||
{
|
{
|
||||||
$this->db = $db;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parser method for setting the parse string
|
* Parser method for setting the parse string
|
||||||
*
|
*
|
||||||
* @param string $sql
|
* @return mixed[][]
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function parseJoin(string $sql): array
|
public function parseJoin(string $sql): array
|
||||||
{
|
{
|
||||||
@ -87,14 +72,11 @@ class QueryParser {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Compiles a join condition after parsing
|
* Compiles a join condition after parsing
|
||||||
*
|
|
||||||
* @param string $condition
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function compileJoin(string $condition): string
|
public function compileJoin(string $condition): string
|
||||||
{
|
{
|
||||||
$parts = $this->parseJoin($condition);
|
$parts = $this->parseJoin($condition);
|
||||||
$count = count($parts['identifiers']);
|
$count = is_countable($parts['identifiers']) ? count($parts['identifiers']) : 0;
|
||||||
|
|
||||||
// Go through and quote the identifiers
|
// Go through and quote the identifiers
|
||||||
for($i=0; $i <= $count; $i++)
|
for($i=0; $i <= $count; $i++)
|
||||||
@ -111,8 +93,7 @@ class QueryParser {
|
|||||||
/**
|
/**
|
||||||
* Returns a more useful match array
|
* Returns a more useful match array
|
||||||
*
|
*
|
||||||
* @param array $array
|
* @return mixed[]
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
protected function filterArray(array $array): array
|
protected function filterArray(array $array): array
|
||||||
{
|
{
|
||||||
|
@ -19,10 +19,10 @@ namespace Query;
|
|||||||
* 'Enum' of query types
|
* 'Enum' of query types
|
||||||
*/
|
*/
|
||||||
class QueryType {
|
class QueryType {
|
||||||
public const SELECT = 'select';
|
public final const SELECT = 'select';
|
||||||
public const INSERT = 'insert';
|
public final const INSERT = 'insert';
|
||||||
public const INSERT_BATCH = 'insert_batch';
|
public final const INSERT_BATCH = 'insert_batch';
|
||||||
public const UPDATE = 'update';
|
public final const UPDATE = 'update';
|
||||||
public const UPDATE_BATCH = 'update_batch';
|
public final const UPDATE_BATCH = 'update_batch';
|
||||||
public const DELETE = 'delete';
|
public final const DELETE = 'delete';
|
||||||
}
|
}
|
@ -49,84 +49,69 @@ class State {
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! SQL Clause Strings
|
// ! SQL Clause Strings
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compiled 'select' clause
|
* Compiled 'select' clause
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $selectString = '';
|
protected string $selectString = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compiled 'from' clause
|
* Compiled 'from' clause
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $fromString = '';
|
protected string $fromString = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compiled arguments for insert / update
|
* Compiled arguments for insert / update
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $setString = '';
|
protected string $setString = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Order by clause
|
* Order by clause
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $orderString = '';
|
protected string $orderString = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Group by clause
|
* Group by clause
|
||||||
* @var string
|
|
||||||
*/
|
*/
|
||||||
protected string $groupString = '';
|
protected string $groupString = '';
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! SQL Clause Arrays
|
// ! SQL Clause Arrays
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Keys for insert/update statement
|
* Keys for insert/update statement
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
protected array $setArrayKeys = [];
|
protected array $setArrayKeys = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Key/val pairs for order by clause
|
* Key/val pairs for order by clause
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
protected array $orderArray = [];
|
protected array $orderArray = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Key/val pairs for group by clause
|
* Key/val pairs for group by clause
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
protected array $groupArray = [];
|
protected array $groupArray = [];
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// ! Other Class vars
|
// ! Other Class vars
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Values to apply to prepared statements
|
* Values to apply to prepared statements
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
protected array $values = [];
|
protected array $values = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Values to apply to where clauses in prepared statements
|
* Values to apply to where clauses in prepared statements
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
protected array $whereValues = [];
|
protected array $whereValues = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value for limit string
|
* Value for limit string
|
||||||
* @var int
|
|
||||||
*/
|
*/
|
||||||
protected ?int $limit = NULL;
|
protected ?int $limit = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value for offset in limit string
|
* Value for offset in limit string
|
||||||
* @var int
|
|
||||||
*/
|
*/
|
||||||
protected ?int $offset = NULL;
|
protected ?int $offset = NULL;
|
||||||
|
|
||||||
@ -140,20 +125,17 @@ class State {
|
|||||||
* 'conjunction' => ' AND ',
|
* 'conjunction' => ' AND ',
|
||||||
* 'string' => 'k=?'
|
* 'string' => 'k=?'
|
||||||
* ]
|
* ]
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
protected array $queryMap = [];
|
protected array $queryMap = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map for having clause
|
* Map for having clause
|
||||||
* @var array
|
|
||||||
*/
|
*/
|
||||||
protected array $havingMap = [];
|
protected array $havingMap = [];
|
||||||
|
|
||||||
public function __call(string $name, array $arguments)
|
public function __call(string $name, array $arguments)
|
||||||
{
|
{
|
||||||
if (strpos($name, 'get', 0) === 0)
|
if (str_starts_with($name, 'get'))
|
||||||
{
|
{
|
||||||
$maybeProp = lcfirst(substr($name, 3));
|
$maybeProp = lcfirst(substr($name, 3));
|
||||||
if (isset($this->$maybeProp))
|
if (isset($this->$maybeProp))
|
||||||
@ -162,7 +144,7 @@ class State {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strpos($name, 'set', 0) === 0)
|
if (str_starts_with($name, 'set'))
|
||||||
{
|
{
|
||||||
$maybeProp = lcfirst(substr($name, 3));
|
$maybeProp = lcfirst(substr($name, 3));
|
||||||
if (isset($this->$maybeProp))
|
if (isset($this->$maybeProp))
|
||||||
@ -175,20 +157,12 @@ class State {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $str
|
|
||||||
* @return State
|
|
||||||
*/
|
|
||||||
public function appendSelectString(string $str): self
|
public function appendSelectString(string $str): self
|
||||||
{
|
{
|
||||||
$this->selectString .= $str;
|
$this->selectString .= $str;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $setArrayKeys
|
|
||||||
* @return State
|
|
||||||
*/
|
|
||||||
public function appendSetArrayKeys(array $setArrayKeys): self
|
public function appendSetArrayKeys(array $setArrayKeys): self
|
||||||
{
|
{
|
||||||
$this->setArrayKeys = array_merge($this->setArrayKeys, $setArrayKeys);
|
$this->setArrayKeys = array_merge($this->setArrayKeys, $setArrayKeys);
|
||||||
@ -196,9 +170,7 @@ class State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $key
|
|
||||||
* @param mixed $orderArray
|
* @param mixed $orderArray
|
||||||
* @return State
|
|
||||||
*/
|
*/
|
||||||
public function setOrderArray(string $key, $orderArray): self
|
public function setOrderArray(string $key, $orderArray): self
|
||||||
{
|
{
|
||||||
@ -206,20 +178,12 @@ class State {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $groupArray
|
|
||||||
* @return State
|
|
||||||
*/
|
|
||||||
public function appendGroupArray(string $groupArray): self
|
public function appendGroupArray(string $groupArray): self
|
||||||
{
|
{
|
||||||
$this->groupArray[] = $groupArray;
|
$this->groupArray[] = $groupArray;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $values
|
|
||||||
* @return State
|
|
||||||
*/
|
|
||||||
public function appendValues(array $values): self
|
public function appendValues(array $values): self
|
||||||
{
|
{
|
||||||
$this->values = array_merge($this->values, $values);
|
$this->values = array_merge($this->values, $values);
|
||||||
@ -228,7 +192,6 @@ class State {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param mixed $val
|
* @param mixed $val
|
||||||
* @return State
|
|
||||||
*/
|
*/
|
||||||
public function appendWhereValues($val): self
|
public function appendWhereValues($val): self
|
||||||
{
|
{
|
||||||
@ -248,11 +211,6 @@ class State {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Add an additional set of mapping pairs to a internal map
|
* Add an additional set of mapping pairs to a internal map
|
||||||
*
|
|
||||||
* @param string $conjunction
|
|
||||||
* @param string $string
|
|
||||||
* @param string $type
|
|
||||||
* @return State
|
|
||||||
*/
|
*/
|
||||||
public function appendMap(string $conjunction = '', string $string = '', string $type = ''): self
|
public function appendMap(string $conjunction = '', string $string = '', string $type = ''): self
|
||||||
{
|
{
|
||||||
@ -264,10 +222,6 @@ class State {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $item
|
|
||||||
* @return State
|
|
||||||
*/
|
|
||||||
public function appendHavingMap(array $item): self
|
public function appendHavingMap(array $item): self
|
||||||
{
|
{
|
||||||
$this->havingMap[] = $item;
|
$this->havingMap[] = $item;
|
||||||
|
@ -21,12 +21,8 @@ namespace {
|
|||||||
/**
|
/**
|
||||||
* Global functions that don't really fit anywhere else
|
* Global functions that don't really fit anywhere else
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multibyte-safe trim function
|
* Multibyte-safe trim function
|
||||||
*
|
|
||||||
* @param string $string
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
function mb_trim(string $string): string
|
function mb_trim(string $string): string
|
||||||
{
|
{
|
||||||
@ -36,9 +32,7 @@ namespace {
|
|||||||
/**
|
/**
|
||||||
* Filter out db rows into one array
|
* Filter out db rows into one array
|
||||||
*
|
*
|
||||||
* @param array $array
|
|
||||||
* @param mixed $index
|
* @param mixed $index
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
function dbFilter(array $array, $index): array
|
function dbFilter(array $array, $index): array
|
||||||
{
|
{
|
||||||
@ -57,9 +51,6 @@ namespace {
|
|||||||
*
|
*
|
||||||
* The $zipperInput array is an array of arrays indexed by their place in the output
|
* The $zipperInput array is an array of arrays indexed by their place in the output
|
||||||
* array.
|
* array.
|
||||||
*
|
|
||||||
* @param array $zipperInput
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
function arrayZipper(array $zipperInput): array
|
function arrayZipper(array $zipperInput): array
|
||||||
{
|
{
|
||||||
@ -83,10 +74,6 @@ namespace {
|
|||||||
/**
|
/**
|
||||||
* Determine whether a value in the passed array matches the pattern
|
* Determine whether a value in the passed array matches the pattern
|
||||||
* passed
|
* passed
|
||||||
*
|
|
||||||
* @param array $array
|
|
||||||
* @param string $pattern
|
|
||||||
* @return bool
|
|
||||||
*/
|
*/
|
||||||
function regexInArray(array $array, string $pattern): bool
|
function regexInArray(array $array, string $pattern): bool
|
||||||
{
|
{
|
||||||
@ -97,7 +84,7 @@ namespace {
|
|||||||
|
|
||||||
foreach ($array as $item)
|
foreach ($array as $item)
|
||||||
{
|
{
|
||||||
if (is_scalar($item) && preg_match($pattern, $item))
|
if (is_scalar($item) && preg_match($pattern, (string) $item))
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -113,11 +100,9 @@ namespace {
|
|||||||
* the array or object has an 'alias' parameter, passing that string to this
|
* the array or object has an 'alias' parameter, passing that string to this
|
||||||
* function will return that connection. Passing no parameters returns the last
|
* function will return that connection. Passing no parameters returns the last
|
||||||
* connection created.
|
* connection created.
|
||||||
*
|
|
||||||
* @param string|object|array $params
|
|
||||||
* @return QueryBuilderInterface|null
|
|
||||||
*/
|
*/
|
||||||
function Query($params = ''): ?QueryBuilderInterface
|
function Query(string|object|array|null $params = ''): ?QueryBuilderInterface
|
||||||
|
|
||||||
{
|
{
|
||||||
if ($params === NULL)
|
if ($params === NULL)
|
||||||
{
|
{
|
||||||
@ -127,7 +112,7 @@ namespace {
|
|||||||
$manager = ConnectionManager::getInstance();
|
$manager = ConnectionManager::getInstance();
|
||||||
|
|
||||||
// If you are getting a previously created connection
|
// If you are getting a previously created connection
|
||||||
if (is_scalar($params))
|
if (is_string($params))
|
||||||
{
|
{
|
||||||
return $manager->getConnection($params);
|
return $manager->getConnection($params);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user