codesvault / howdy-qb
Mysql Query Builder for WordPress
1.2.0
2023-01-09 09:32 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpcompatibility/php-compatibility: ^9.3
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.7
- symfony/var-dumper: ^5.4
- wp-coding-standards/wpcs: ^2.3
README
Relational Database Query builder for WordPress.
WP Query Builder uses PDO
for database queries. It has zero dependencies with third-party query builders or any other composer library.
Documentation
Documentation website here.
Examples
Create Table
DB::create('querybuilder') ->column('ID')->bigInt()->unsigned()->autoIncrement()->primary()->required() ->column('name')->string(255)->required() ->column('email')->string(255)->default('NULL') ->index(['ID']) ->execute();
Insert Statement
DB::insert('querybuilder', [ [ 'name' => 'Keramot UL Islam', 'email' => 'keramotul.@gmail.com', ] ]);
Update Statement
DB::update('querybuilders', [ 'name' => 'Keramot UL', 'email' => 'keramotul.islam@gmail.com' ]) ->where('ID', '=', 10) ->andWhere('name', '=', 'Abm Sourav') ->execute();
Select Statement
$result = DB::select('qb.ID', 'qb.name, qb.email') ->from('querybuilders') ->alias('qb') ->groupBy('name') ->get(); // *** where clouse $result = DB::select('posts.ID', 'posts.post_title') ->distinct() ->from('posts posts') ->where('posts.post_status', '=', 'publish') ->orderBy('post_title', 'DESC') ->limit(10)->offset(2) ->get(); // *** JOIN DB::select('users.display_name name') ->count('posts.ID', 'posts') ->from('users users') ->join('posts posts') ->where('posts.post_status', '=', 'publish') ->andWhere('posts.post_type', '=', 'post') ->get(); // raw sql DB::select('posts.post_title') ->from('posts posts') ->raw("WHERE posts.post_type = 'post'") ->andWhere('posts.post_status', '=', 'publish') ->raw("LIMIT 10") ->get();
Delete Statement
// delete one row DB::delete('posts') ->where('ID', '=', 3) ->execute(); // delete all records DB::delete('posts')->execute();
Drop Statement
DB::drop('posts'); DB::dropIfExists('terms');
Single instence
Expressions also can be exicuted with one instence of DB
class. By doing this database connection will be stablished only once.
$db = new DB(); $result = $db::select('posts.ID', 'posts.post_title') ... $db::create('meta') ...
Database Connection
By default database connection will set out of the box, automaically. But if you can also manually input database configurations.
$db = new DB(); $db->setDBConfig([ "dbhost" => <mysql host>, "dbname" => <database name>, "dbuser" => <database username>, "dbpassword" => <database password>, "prefix" => <database table prefix> ]);
Driver
The default driver is PDO
. But if you want to use wpdb
which uses Mysqli, you also can do that by changing the driver.
$db = new DB(); $db::setDriver('wpdb'); $db::select('posts.post_title') ->from('posts posts') ->get();
Dev Envirenment Setup for Contributors
Want to contribute to this package? Please follow the steps below.
- Create a local WordPress envirenment setup.
- Create a basic plugin.
- Run
composer init
into the plugin. - Clone
git@github.com:CodesVault/howdy_qb.git
into plugin folder. -
Add repository for local package in plugin's
composer.json
."repositories": [ { "type": "path", "url": "./howdy_qb" } ],
- Require this package.
composer require "codesvault/howdy-qb @dev"