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 website here.
This Query Builder is also used in Kathamo Framework. Kathamo is a modern framework for WordPress plugin development.
DB::create('querybuilder')
->column('ID')->bigInt()->unsigned()->autoIncrement()->primary()->required()
->column('user_id')->bigInt()->unsigned()->required()
->column('name')->string(255)->required()
->column('email')->string(255)->nullable()
->column('settings')->enum(['active', 'inactive'])
->column('created_at')->timestamp('now', 'current')
->foreignKey('user_id', 'users.ID', 'cascade')
->index(['ID'])
->execute();
DB::insert('querybuilder', [
[
'name' => 'Keramot UL Islam',
'email' => '[email protected]',
]
]);
DB::update('querybuilders', [
'name' => 'Keramot UL',
'email' => '[email protected]'
])
->where('ID', '=', 10)
->andWhere('name', '=', 'Abm Sourav')
->execute();
$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 one row
DB::delete('posts')
->where('ID', '=', 3)
->execute();
// delete all records
DB::delete('posts')->execute();
DB::drop('posts');
DB::dropIfExists('terms');
DB::alter('cv_users')
->modify('name', 'username')->string(455)->required()
->modify('settings')->json()
->execute();
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')
...
By default database connection will set out of the box, automaically. But you can also manually input database configurations. This way, you also can debug your database queries from terminal.
$db = DB::setConnection(
[
"dbhost" => 'mysql_host',
"dbname" => 'database_name',
"dbuser" => 'database_user',
"dbpassword" => 'database_password',
"prefix" => 'database_table_prefix'
]
);
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('wpdb');
$db::select('posts.post_title')
->from('posts posts')
->get();
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
[email protected]:CodesVault/howdy_qb.git
into plugin folder. -
Add repository for local package in plugin's
composer.json
."repositories": [ { "type": "path", "url": "./howdy_qb", "options": { "symlink": true } } ],
- Require this package.
composer require "codesvault/howdy-qb @dev"