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.
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" } ],
- Require this package.
composer require "codesvault/howdy-qb @dev"
DB::create('querybuilder')
->column('ID')->bigInt()->unsigned()->autoIncrement()->primary()->required()
->column('name')->string(255)->required()
->column('email')->string(255)->default('NULL')
->index(['ID'])
->execute();
// with foreign key
DB::create('howdy_qb')
->column('name')->string(255)->required()
->column('email')->string(255)->required()
->column('howdyID')->bigInt()->unsigned()
->foreignKey('howdyID', 'howdy', '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();
$result =
DB::select('posts.ID', 'posts.post_title')
->distinct()
->from('posts posts')
->where(function($query) {
$query->where('posts.post_status', '=', 'publish')
->andWhere('posts.post_type', '=', 'page');
})
->orderBy('post_title', 'DESC')
->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();
DB::select('posts.post_title')
->from('posts posts')
->innerJoin('term_relationships term_rel', 'posts.ID', 'term_rel.object_id')
->where('posts.post_status', '=', 'publish')
->get();
// delete one row
DB::delete('posts')
->where('ID', '=', 3)
->execute();
// delete all records
DB::delete('posts')->execute();
// drop table
DB::delete('posts')
->drop()
->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')
...