Eloquent 是 Laravel 的 ORM 组件,可以帮助我们非常方便的管理 WordPress 数据库,存取数据到数据表中,Eloquent 是 Laravel 是一个松耦合的实现,也就是说,我们可以把 Eloquent 用到第三方系统中,今天就为大家介绍一个可以帮助我们在 WordPress 使用 Eloquent 的 PHP 包。

首先,通过 Composer 安装 Eloquent ORM

编辑你主题的 composer.json 文件,加入以下内容。

{
    "require": {
        "tareq1988/wp-eloquent": "dev-master"
    }
}

然后运行:

$ composer install

如果你已经使用 Composer 来管理你的主题了,直接以下代码:

$ composer require tareq1988/wp-eloquent

使用示例

引入 wp-eloquent 包

在需要使用 Eloquent 的文件或者WordPress主题的functions.php 文件中直接引入 Composer 生成的自动加载文件即可在 WordPress 中使用 Eloquent 包。

require_once( dirname( __FILE__ ) . '/../vendor/autoload.php' );

基本使用方法

$db = WeDevsORMEloquentDatabase::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() );

获取一个数据表中的所有行

$users = $db->table('users')->get();

foreach ($users as $user) {
    var_dump($user->display_name);
}

注意,users 就是 WordPress 数据库的中 wp_users 数据表,在这里使用的时候,不用加 wp 前缀,wp-eloquent 会自动为我们添加。

新建一个模型

use WeDevsORMEloquentModel as Model;

class Employee extends Model {

}

var_dump( Employee::all()->toArray() ); // 获取所有雇员
var_dump( Employee::find(1) ); // 获取 ID 为1 的雇员

类型 Employee 将被翻译未 PREFIX_employees 数据表然后运行查询,同时,如有需要,我们也可以修改数据表名称。

内置的 WordPress 模型

  • Post
  • Comment
  • Post Meta
  • User
  • User Meta
use WeDevsORMWPPost as Post;

var_dump( Post::all() ); // 只返回文章类型为 "post" 的文章

根据文章状态和文章类型过滤查询

use WeDevsORMWPPost as Post;
var_dump(Post::type('page')->get()->toArray()); // 获取页面
var_dump(Post::status('publish')->get()->toArray()); // 获取已发布的文章
var_dump(Post::type('page')->status('publish')->get()->toArray()); // 获取已发布的页面

工作原理

  • Eloquent 在这里主要作为一个查询构建器使用
  • Eloquent 使用 WPDB 进行数据库查询
  • 因此,我们可以使用 debug-bar 或 query-monitor 来获取 SQL 查询报价
  • WP Eloquent 不会增加额外的数据库链接和查询

最小需求