codesvault/howdy-qb

Mysql Query Builder for WordPress

1.2.0 2023-01-09 09:32 UTC

This package is auto-updated.

Last update: 2023-03-14 19:54:52 UTC


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"