Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/codesvault/howdy_qb
MySQL Query Builder for WordPress
https://github.com/codesvault/howdy_qb
composer composer-library composer-package database mysql pdo-mysql pdo-php php query query-builder querybuilder relational-databases wordpress wordpress-development wordpress-php-library
Last synced: 7 days ago
JSON representation
MySQL Query Builder for WordPress
- Host: GitHub
- URL: https://github.com/codesvault/howdy_qb
- Owner: CodesVault
- License: mit
- Created: 2021-09-19T03:47:53.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-29T12:31:16.000Z (28 days ago)
- Last Synced: 2024-12-11T10:37:30.343Z (16 days ago)
- Topics: composer, composer-library, composer-package, database, mysql, pdo-mysql, pdo-php, php, query, query-builder, querybuilder, relational-databases, wordpress, wordpress-development, wordpress-php-library
- Language: PHP
- Homepage: https://wp-querybuilder.pages.dev
- Size: 460 KB
- Stars: 22
- Watchers: 4
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WP Query Builder
Relational Database Query builder for WordPress.
WP Query Builder usesPDO
for database queries. It has zero dependencies with third-party query builders or any other composer library.
# Documentation
Documentation website [here](https://wp-querybuilder.pages.dev/).
This Query Builder is also used in [Kathamo](https://kathamo.dev) Framework. Kathamo is a modern framework for WordPress plugin development.
## Examples
### Create Table
``` php
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();
```
### Insert Statement
``` php
DB::insert('querybuilder', [
[
'name' => 'Keramot UL Islam',
'email' => '[email protected]',
]
]);
```
### Update Statement
``` php
DB::update('querybuilders', [
'name' => 'Keramot UL',
'email' => '[email protected]'
])
->where('ID', '=', 10)
->andWhere('name', '=', 'Abm Sourav')
->execute();
```
### Select Statement
``` php
$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
``` php
// delete one row
DB::delete('posts')
->where('ID', '=', 3)
->execute();// delete all records
DB::delete('posts')->execute();
```
### Drop Statement
``` php
DB::drop('posts');
DB::dropIfExists('terms');
```
### Alter Statement
``` php
DB::alter('cv_users')
->modify('name', 'username')->string(455)->required()
->modify('settings')->json()
->execute();
```
### Single instence
Expressions also can be exicuted with one instence ofDB
class. By doing this database connection will be stablished only once.``` php
$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 you can also manually input database configurations. This way, you also can debug your database queries from terminal.```php
$db = DB::setConnection(
[
"dbhost" => 'mysql_host',
"dbname" => 'database_name',
"dbuser" => 'database_user',
"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.
``` php
$db = new DB('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
[email protected]:CodesVault/howdy_qb.git
into plugin folder. -
Add repository for local package in plugin'scomposer.json
.
"repositories": [
{
"type": "path",
"url": "./howdy_qb",
"options": {
"symlink": true
}
}
],
- Require this package.
composer require "codesvault/howdy-qb @dev"