Eloquent 是 Laravel 的 ORM 组件,可以帮助我们非常方便的管理 WordPress 数据库,存取数据到数据表中,Eloquent 是 Laravel 是一个松耦合的实现,也就是说,我们可以把 Eloquent 用到第三方系统中,今天就为大家介绍一个可以帮助我们在 WordPress 使用 Eloquent 的 PHP 包。
GitHub 地址:https://github.com/tareq1988/wp-eloquent
通过 Composer 安装 Eloquent ORM 包
编辑你主题的 composer.json 文件,加入以下内容。
{ "require": { "tareq1988/wp-eloquent": "dev-master" } }
然后运行:
$ composer install
使用示例
引入 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() );
获取一个数据表中的所有行
$users = $db->table('users')->get(); foreach ($users as $user) { var_dump($user->display_name); }
注意:users 就是 WordPress 数据库的中的 wp_users 数据表。在这里使用的时候,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 数据表然后运行查询,同时,如有需要,我们也可以修改数据表名称。
操作内置的 WordPress 模型
- Post
- Comment
- Post Meta
- User
- User Meta
use WeDevs\ORM\WP\Post as Post; var_dump( Post::all() ); // 只返回文章类型为 "post" 的文章
根据文章状态和文章类型过滤查询
use WeDevs\ORM\WP\Post 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 是一个比 WPDB 更为优雅的查询构建器(Query Builder)
- Eloquent 使用 WPDB 进行数据库查询,即理论上不会增加额外的数据库连接和查询
- 我们可以使用 debug-bar 或 query-monitor 来获取 SQL 查询报告
@Via:WordPress 智库
很好,很强大
这个功能好强大哦!