[WordPress] 外掛分享: NinjaDB

首頁外掛目錄 › NinjaDB
WordPress 外掛 NinjaDB 的封面圖片
全新外掛
安裝啟用
尚無評分
3089 天前
最後更新
問題解決
WordPress 4.0+ v0.8 上架:2017-09-25

內容簡介

一個輕量級、具有表達能力的 WordPress 查詢建構器。NinjaDB 使用相同的 $wpdb 實例和方法,它將幫助您輕鬆與表達能力撰寫 $wpdb 查詢。至少需要 PHP 5.3。

它具有一些高級功能,例如:
- 像 Laravel 基本查詢一樣的查詢
- where、orWhere 方法
- 在所有列或特定列中搜索數據
- 輕鬆實現分頁
- 使用 insert、update 或 delete 方法有表達能力。

語法與 Laravel 的查詢建構器非常相似。

簡單查詢:

以下查詢將返回 id = 3 的行,如果沒有行則返回 null。

$row = ninjaDB('my_table')->find(3);

完整查詢:

$query = ninjaDB('my_table')->where('post_author', '=', 1); // for equal you can just use where('post_author, 1);
// Get result as array of objects
$query->get();

完整用法 API

### 初始化

// 選擇資料表
$query = ninjaDB()->table('post'); // post 為不帶前綴的資料表名稱;

或者您可以將資料表名稱作為引數傳遞

// 選擇資料表
$query = ninjaDB('my_table'); // post 為不帶前綴的資料表名稱;<h3>查詢</h3>

輕鬆取得

以下查詢將返回 id = 3 的行,如果沒有行則返回 null。

$row = ninjaDB('my_table')->find(3);

像這樣使用 echo $row->name 存取您的行。如果欄位名稱不是 id,則作為第二個參數傳遞欄位名稱 ninjaDB('my_table')->find(3, 'author_id');。

以下查詢將以對象數組的形式返回所有行,其 author_id = 3,如果沒有行則返回 null。

$result = ninjaDB('my_table')->findAll('author_id', 3);

選擇
$query = ninjaDB('my_table')->select('*');

多選擇
->select(array('myfield1', 'myfield2', 'amyfield3'));

使用 select 方法多次 select('a')->select('b') 也會選擇 a 和 b。如果您想進行條件選擇(在 PHP if 中),這可能很有用。

取得全部

返回一個對象數組。

$query = ninjaDB('my_table')->where('author_id', 1);
$result = $query->get();

您可以像這樣循環遍歷:

foreach ($result as $row) {
echo $row->name;
}

取得第一行
$query = ninjaDB('my_table')->where('author_id', 1);
$row = $query->first();

返回第一行,如果沒有記錄則返回 null。使用此方法,您還可以確保記錄是否存在。訪問這些將 echo $row->name。

取得行數、最大值、最小值、平均值、總和
$query = ninjaDB('my_table')->where('author_id', 1);
$count = $query->count();
$max = $query->max('views'); // Where `views` is the column name and all these will return integer / float
$min = $query->min('views');
$avg = $query->avg('views');
$avg = $query->avg('views');
$sum = $query->sum('views');

where

基本語法為 (field name, operator, value),如果只給兩個參數,則假定使用 = 運算子。因此,where('name', 'jewel') 和 where('name', '=', 'jewel') 是相同的。

ninjaDB('my_table')
->where('name', '=', 'jewel')

開發者團隊

⬇ 下載最新版 (v0.8) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「NinjaDB」→ 直接安裝(推薦)

原文外掛簡介

A lightweight, expressive query builder for WordPress. NInjaDB use the same $wbdp instance and methods, It will help you to write $wpdb queries easily and expressively. At least PHP 5.3 is required.
It has some advanced features like:
– Query Like Laravel Basic Queries
– Where, orWhere methods
– Search data in all the columns or specific columns
– Easily Implement Pagination
– use insert, update or delete methods expressively.
The syntax is quite similar to Laravel’s query builder.
Simple Query:
The query below returns the row where id = 3, null if no rows.
$row = ninjaDB('my_table')->find(3);

Full Queries:
$query = ninjaDB('my_table')->where('post_author', '=', 1); // for equal you can just use where('post_author, 1);
// Get result as array of objects
$query->get();

Full Usage API
### Initiate
// Select a table
$query = ninjaDB()->table('post'); // post is the table name without prefix;

OR You can pass your table name as an argument
// Select a table
$query = ninjaDB('my_table'); // post is the table name without prefix;

Query

Get Easily
The query below returns the (first) row where id = 3, null if no rows.
$row = ninjaDB('my_table')->find(3);

Access your row like, echo $row->name. If your field name is not id then pass the field name as second parameter ninjaDB('my_table')->find(3, 'author_id');.
The query below returns the all rows as array of objects where author_id = 3, null if no rows.
$result = ninjaDB('my_table')->findAll('author_id', 3);

Select
$query = ninjaDB('my_table')->select('*');

Multiple Selects
->select(array('myfield1', 'myfield2', 'amyfield3'));

Using select method multiple times select('a')->select('b') will also select a and b. Can be useful if you want to do conditional selects (within a PHP if).
Get All
Return an array of objects.
$query = ninjaDB('my_table')->where('author_id', 1);
$result = $query->get();

You can loop through it like:
foreach ($result as $row) {
echo $row->name;
}

Get First Row
$query = ninjaDB('my_table')->where('author_id', 1);
$row = $query->first();

Returns the first row, or null if there is no record. Using this method you can also make sure if a record exists. Access these like echo $row->name.
Get Rows Count, MAX, MIN, AVerage, SUM
$query = ninjaDB('my_table')->where('author_id', 1);
$count = $query->count();
$max = $query->max('views'); // Where `views` is the column name and all these will return integer / float
$min = $query->min('views');
$avg = $query->avg('views');
$avg = $query->avg('views');
$sum = $query->sum('views');

Where
Basic syntax is (fieldname, operator, value), if you give two parameters then = operator is assumed. So where('name', 'jewel') and where('name', '=', 'jewel') is the same.
ninjaDB('my_table')
->where('name', '=', 'jewel')
->whereNot('age', '>', 25)
->orWhere('description', 'LIKE', '%query%');

whereIn
ninjaDB('my_table')
->whereIn( 'id', array(1,2,3) )
->get();

Limit and Offset
->limit(30);
->offset(10);

// or you can use aliases
->take(30);
->skip(10);

Order By
->orderBy('id', 'ASC');

Insert
$data = array(
'name' => 'Jewel',
'description' => 'Hello, There'
);
$insertId = ninjaDB('my_table')->insert($data);

insert() method returns the insert id. optionally you can pass $format of your data as `->insert($data, $format);` where `$format` is an array of formats to be mapped to each of the value in $data

Batch Insert
$data = array(
array(
'name' => 'Jewel',
'description' => 'Hello, There'
),
array(
'name' => 'Adre',
'description' => 'Hello, I am Adre Astrian'
),
);
$insertIds = ninjaDB('my_table')->batch_insert($data);

In case of batch insert, it will return an array of insert ids.
Update
$data = array(
'name' => 'Shahjahan Jewel',
'description' => 'Hello, There'
);

ninjaDB('my_table')->where('id', 5)->update($data);

Will update the name field to Shahjahan Jewel and description field to Hello, There where id = 5.
Delete
ninjaDB('my_table')->where('id', '>', 5)->delete();

Will delete all the rows where id is greater than 5.
If you find any typo or extend any functionality then please edit and send a pull request.
TODO

[ ] join()
[x] whereIN()
[ ] whereNotIN()
[ ] whereBetween
[ ] whereNotBetween
[ ] Having
[ ] GroupBy
[x] selectDistinct

If you would like to implement any of the TODO please feel free to do and do a pull request
And, finally, consider to contribute to this plugin here.

延伸相關外掛

文章
Filter
Apply Filters
Mastodon