Eloquent 是 Laravel 的 ORM 組件,可以幫助我們非常方便的管理 WordPress 數(shù)據(jù)庫,存取數(shù)據(jù)到數(shù)據(jù)表中,Eloquent 是 Laravel 是一個松耦合的實現(xiàn),也就是說,我們可以把 Eloquent 用到第三方系統(tǒng)中,今天就為大家介紹一個可以幫助我們在 WordPress 使用 Eloquent 的 PHP 包。
首先,通過 Composer 安裝 Eloquent ORM 包
編輯你主題的 composer.json 文件,加入以下內(nèi)容。
{
"require": {
"tareq1988/wp-eloquent": "dev-master"
}
}
然后運行:
$ composer install
如果你已經(jīng)使用 Composer 來管理你的主題了,直接以下代碼:
$ composer require tareq1988/wp-eloquent
使用示例
引入 wp-eloquent 包
在需要使用 Eloquent 的文件或者WordPress主題的functions.php 文件中直接引入 Composer 生成的自動加載文件即可在 WordPress 中使用 Eloquent 包。
require_once( dirname( __FILE__ ) . '/../vendor/autoload.php' );
基本使用方法
$db = \WeDevs\ORM\Eloquent\Database::instance();
var_dump( $db->table('users')->find(1) );
var_dump( $db->select('SELECT * FROM wp_users WHERE id = ?', [1]) );
var_dump( $db->table('users')->where('user_login', 'john')->first() );
獲取一個數(shù)據(jù)表中的所有行
$users = $db->table('users')->get();
foreach ($users as $user) {
var_dump($user->display_name);
}
注意,users 就是 WordPress 數(shù)據(jù)庫的中 wp_users 數(shù)據(jù)表,在這里使用的時候,不用加 wp 前綴,wp-eloquent 會自動為我們添加。
新建一個模型
use \WeDevs\ORM\Eloquent\Model as Model;
class Employee extends Model {
}
var_dump( Employee::all()->toArray() ); // 獲取所有雇員
var_dump( Employee::find(1) ); // 獲取 ID 為1 的雇員
類型 Employee 將被翻譯未 PREFIX_employees 數(shù)據(jù)表然后運行查詢,同時,如有需要,我們也可以修改數(shù)據(jù)表名稱。
內(nèi)置的 WordPress 模型
- Post
- Comment
- Post Meta
- User
- User Meta
use WeDevs\ORM\WP\Post as Post;
var_dump( Post::all() ); // 只返回文章類型為 "post" 的文章
根據(jù)文章狀態(tài)和文章類型過濾查詢
use WeDevs\ORM\WP\Post as Post;
var_dump(Post::type('page')->get()->toArray()); // 獲取頁面
var_dump(Post::status('publish')->get()->toArray()); // 獲取已發(fā)布的文章
var_dump(Post::type('page')->status('publish')->get()->toArray()); // 獲取已發(fā)布的頁面
工作原理
- Eloquent 在這里主要作為一個查詢構建器使用
- Eloquent 使用 WPDB 進行數(shù)據(jù)庫查詢
- 因此,我們可以使用 debug-bar 或 query-monitor 來獲取 SQL 查詢報價
- WP Eloquent 不會增加額外的數(shù)據(jù)庫鏈接和查詢
最小需求
- PHP 5.3.0
- WordPress 3.6+



太棒了!RoR 有 ActiveRecord,Laravel 有 Eloquent ORM,一直在想 WordPress 那個難用的 wpdb 什么時候才能替換掉……感謝刀哥!
=w=順便轉載了很多好文章:https://wplog.org/topics/16