IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    WP-Eloquent – 让 WordPress 像 Laravel 一样操作数据库

    PCDotFan发表于 2017-03-02 02:00:25
    love 0

      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 智库

     


沪ICP备19023445号-2号
友情链接