Skip to content

Instantly share code, notes, and snippets.

@agungsugiarto
Last active April 13, 2023 14:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agungsugiarto/4714d62ceedb1b21e424a16fadbe9864 to your computer and use it in GitHub Desktop.
Save agungsugiarto/4714d62ceedb1b21e424a16fadbe9864 to your computer and use it in GitHub Desktop.
Easy connection to connect database for CodeIgniter 4 application, this class like facade pattern to easy call method with static.
<?php
namespace App\Facades;
use Config\Database;
/**
* @method static void initialize()
* @method static void close()
* @method static mixed persistentConnect()
* @method static false|object|resource getConnection(string|null $alias = null)
* @method static string getDatabase()
* @method static string setPrefix(string $prefix = '')
* @method static string getPrefix()
* @method static string getPlatform()
* @method static \CodeIgniter\Database\BaseConnection setAliasedTables(array $aliases)
* @method static \CodeIgniter\Database\BaseConnection addTableAlias(string $table)
* @method static \CodeIgniter\Database\BaseResult|bool|\CodeIgniter\Database\Query query(string $sql, mixed $binds = null, bool $setEscapeFlags = true, string $queryClass = '')
* @method static false|object|resource simpleQuery(string $sql)
* @method static void transOff()
* @method static \CodeIgniter\Database\BaseConnection transStrict(bool $mode = true)
* @method static bool transStart(bool $testMode = false)
* @method static \CodeIgniter\Database\BaseConnection transException(bool $transExcetion)
* @method static bool transComplete()
* @method static bool transStatus()
* @method static bool transBegin(bool $testMode = false)
* @method static bool transCommit()
* @method static bool transRollback()
* @method static \CodeIgniter\Database\BaseBuilder table(array|string $tableName)
* @method static \CodeIgniter\Database\BaseBuilder newQuery()
* @method static \CodeIgniter\Database\BasePreparedQuery|null prepare(\Closure $func, array $options = [])
* @method static \CodeIgniter\Database\Query getLastQuery()
* @method static string showLastQuery()
* @method static float|null getConnectStart()
* @method static string getConnectDuration(int $decimals = 6)
* @method static array|string protectIdentifiers(array|string $item, bool $prefixSingle = false, bool $protectIdentifiers = null, bool $fieldExists = true)
* @method static array|string escapeIdentifiers(array|string $item)
* @method static string prefixTable(string $table = '')
* @method static int affectedRows()
* @method static array|float|int|string escape(array|bool|float|int|object|string|null $str)
* @method static string|string[] escapeString(string|string[] $str, bool $like = false)
* @method static string|string[] escapeLikeString(string|string[] $str)
* @method static bool callFunction(string $functionName, array ...$params)
* @method static array|false listTables(bool $constrainByPrefix = false)
* @method static bool tableExists(string $tableName, bool $cached = true)
* @method static array|false getFieldNames(string $table)
* @method static bool fieldExists(string $fieldName, string $tableName)
* @method static stdClass[] getFieldData(string $table)
* @method static array getIndexData(string $table)
* @method static array getForeignKeyData(string $table)
* @method static bool disableForeignKeyChecks()
* @method static bool enableForeignKeyChecks()
* @method static \CodeIgniter\Database\BaseConnection pretend(bool $pretend = true)
* @method static \CodeIgniter\Database\BaseConnection resetDataCache()
* @method static bool isWriteType(string $sql)
* @method static array error()
* @method static int|string insertID()
* @method static false|object|resource connect(bool $persistent = false)
* @method static void reconnect()
* @method static mixed setDatabase(string $databaseName)
* @method static string getVersion()
* @method static \CodeIgniter\Database\BaseConnection|\CodeIgniter\Database\ConnectionInterface db()
* @method static \CodeIgniter\Database\BaseBuilder testMode(bool $mode = true)
* @method static string getTable()
* @method static array getBinds()
* @method static \CodeIgniter\Database\BaseBuilder ignore(bool $ignore = true)
* @method static \CodeIgniter\Database\BaseBuilder select(array|\CodeIgniter\Database\RawSql|string $select = '*', bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder selectMax(string $select = '', string $alias = '')
* @method static \CodeIgniter\Database\BaseBuilder selectMin(string $select = '', string $alias = '')
* @method static \CodeIgniter\Database\BaseBuilder selectAvg(string $select = '', string $alias = '')
* @method static \CodeIgniter\Database\BaseBuilder selectSum(string $select = '', string $alias = '')
* @method static \CodeIgniter\Database\BaseBuilder selectCount(string $select = '', string $alias = '')
* @method static \self selectSubquery(\CodeIgniter\Database\BaseBuilder $subquery, string $as)
* @method static \CodeIgniter\Database\BaseBuilder distinct(bool $val = true)
* @method static \CodeIgniter\Database\BaseBuilder from(array|string $from, bool $overwrite = false)
* @method static \CodeIgniter\Database\BaseBuilder fromSubquery(\CodeIgniter\Database\BaseBuilder $from, string $alias)
* @method static \CodeIgniter\Database\BaseBuilder join(string $table, \CodeIgniter\Database\RawSql|string $cond, string $type = '', bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder where(array|\CodeIgniter\Database\RawSql|string $key, mixed $value = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder orWhere(array|\CodeIgniter\Database\RawSql|string $key, mixed $value = null, bool $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder whereIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder orWhereIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder whereNotIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder orWhereNotIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder havingIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder orHavingIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder havingNotIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder orHavingNotIn(string|null $key = null, array|\CodeIgniter\Database\BaseBuilder|Closure|string $values = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder like(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder notLike(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder orLike(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder orNotLike(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder havingLike(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder notHavingLike(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder orHavingLike(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder orNotHavingLike(array|\CodeIgniter\Database\RawSql|string $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false)
* @method static \CodeIgniter\Database\BaseBuilder union(\CodeIgniter\Database\BaseBuilder|Closure $union)
* @method static \CodeIgniter\Database\BaseBuilder unionAll(\CodeIgniter\Database\BaseBuilder|Closure $union)
* @method static \CodeIgniter\Database\BaseBuilder groupStart()
* @method static \CodeIgniter\Database\BaseBuilder orGroupStart()
* @method static \CodeIgniter\Database\BaseBuilder notGroupStart()
* @method static \CodeIgniter\Database\BaseBuilder orNotGroupStart()
* @method static \CodeIgniter\Database\BaseBuilder groupEnd()
* @method static \CodeIgniter\Database\BaseBuilder havingGroupStart()
* @method static \CodeIgniter\Database\BaseBuilder orHavingGroupStart()
* @method static \CodeIgniter\Database\BaseBuilder notHavingGroupStart()
* @method static \CodeIgniter\Database\BaseBuilder orNotHavingGroupStart()
* @method static \CodeIgniter\Database\BaseBuilder havingGroupEnd()
* @method static \CodeIgniter\Database\BaseBuilder groupBy(array|string $by, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder having(array|\CodeIgniter\Database\RawSql|string $key, mixed $value = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder orHaving(array|\CodeIgniter\Database\RawSql|string $key, mixed $value = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder orderBy(string $orderBy, string $direction = '', bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseBuilder limit(int|null $value = null, int|null $offset = 0)
* @method static \CodeIgniter\Database\BaseBuilder offset(int $offset)
* @method static \CodeIgniter\Database\BaseBuilder set(array|object|string $key, mixed $value = '', bool|null $escape = null)
* @method static array getSetData(bool $clean = false)
* @method static string getCompiledSelect(bool $reset = true)
* @method static false|\CodeIgniter\Database\ResultInterface get(int|null $limit = null, int $offset = 0, bool $reset = true)
* @method static int|string countAll(bool $reset = true)
* @method static int|string countAllResults(bool $reset = true)
* @method static array getCompiledQBWhere()
* @method static \CodeIgniter\Database\ResultInterface getWhere(array|string $where = null, int|null $limit = null, int|null $offset = 0, bool $reset = true)
* @method static \CodeIgniter\Database\BaseBuilder|null setData(array|object $set, bool|null $escape = null, string $alias = '')
* @method static string getCompiledUpsert()
* @method static false|int|string[] upsert(array|object|null $set = null, bool|null $escape = null)
* @method static false|int|string[] upsertBatch(array|object|null $set = null, bool|null $escape = null, int $batchSize = 100)
* @method static \CodeIgniter\Database\BaseBuilder updateFields(\CodeIgniter\Database\RawSql[]|string|string[] $set, bool $addToDefault = false, array|null $ignore = null)
* @method static \CodeIgniter\Database\BaseBuilder onConstraint(array|\CodeIgniter\Database\RawSql|string $set)
* @method static \CodeIgniter\Database\BaseBuilder setQueryAsData(\CodeIgniter\Database\BaseBuilder|\CodeIgniter\Database\RawSql $query, string|null $alias = null, array|string|null $columns = null)
* @method static false|int|string[] insertBatch(array|object|null $set = null, bool|null $escape = null, int $batchSize = 100)
* @method static bool|string getCompiledInsert(bool $reset = true)
* @method static bool insert(array|object|null $set = null, bool|null $escape = null)
* @method static \CodeIgniter\Database\BaseResult|false|\CodeIgniter\Database\Query|string replace(array|null $set = null)
* @method static bool|string getCompiledUpdate(bool $reset = true)
* @method static bool update(array|object|null $set = null, array|\CodeIgniter\Database\RawSql|string|null $where = null, int|null $limit = null)
* @method static false|int|string[] updateBatch(array|object|null $set = null, array|\CodeIgniter\Database\RawSql|string|null $constraints = null, int $batchSize = 100)
* @method static bool|string emptyTable()
* @method static bool|string truncate()
* @method static string getCompiledDelete(bool $reset = true)
* @method static bool|string delete(mixed $where = '', int|null $limit = null, bool $resetData = true)
* @method static false|int|string[] deleteBatch(array|object|null $set = null, array|\CodeIgniter\Database\RawSql|null $constraints = null, int $batchSize = 100)
* @method static bool increment(string $column, int $value = 1)
* @method static bool decrement(string $column, int $value = 1)
* @method static \CodeIgniter\Database\BaseBuilder resetQuery()
* @method static \CodeIgniter\Database\BaseBuilder when(array|bool|float|int|object|resource|string|null $condition, callable $callback, callable|null $defaultCallback = null)
* @method static \CodeIgniter\Database\BaseBuilder whenNot(array|bool|float|int|object|resource|string|null $condition, callable $callback, callable|null $defaultCallback = null)
*
* @see \CodeIgniter\Database\BaseConnection
* @see \CodeIgniter\Database\BaseBuilder
*/
class DB
{
/**
* Get a connection instance from the global manager.
*
* @param string|null $connection
* @return \CodeIgniter\Database\BaseConnection
*/
public static function connection($connection = null)
{
return Database::connect($connection);
}
/**
* Call static base connection instance.
*
* @param $method
* @param $arguments
* @return BaseConnection|BaseBuilder
*/
public static function __callStatic($method, $arguments)
{
return static::connection()->{$method}(...$arguments);
}
}
@agungsugiarto
Copy link
Author

agungsugiarto commented Aug 14, 2020

How to use in controller

First save DB.php to the App\Models and now you're ready to use. Example see the below:

<?php 

namespace App\Controllers;

use App\Models\DB;

class Home extends Controller
{
	public function index()
	{
		return $this->response->setJSON([
			'test' => DB::table('authors')->get()->getFirstRow()
		]);
	}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment