kaizencoders / wp-eloquent
WordPress的Eloquent ORM
1.0.0
2021-03-27 18:25 UTC
Requires
- php: >=5.6
- illuminate/database: ^5.4
- illuminate/pagination: ^5.4
This package is auto-updated.
Last update: 2024-09-28 02:17:40 UTC
README
这是一个库包,用于在WordPress中使用Laravel的Eloquent ORM。
包安装
要安装此包,请编辑您的composer.json文件
{ "require": { "kaizencoders/wp-eloquent": "dev-master" } }
现在运行
$ composer install
使用示例
基本用法
$db = \KaizenCoders\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() ); // OR with DB facade use \KaizenCoders\ORM\Eloquent\Facades\DB; 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() );
为自定义表创建模型
您可以使用WordPress数据库的自定义表来创建模型
<?php namespace Whatever; use KaizenCoders\ORM\Eloquent\Model; class CustomTableModel extends Model { /** * Name for table without prefix * * @var string */ protected $table = 'table_name'; /** * Columns that can be edited - IE not primary key or timestamps if being used */ protected $fillable = [ 'city', 'state', 'country' ]; /** * Disable created_at and update_at columns, unless you have those. */ public $timestamps = false; /** Everything below this is best done in an abstract class that custom tables extend */ /** * Set primary key as ID, because WordPress * * @var string */ protected $primaryKey = 'ID'; /** * Make ID guarded -- without this ID doesn't save. * * @var string */ protected $guarded = [ 'ID' ]; /** * Overide parent method to make sure prefixing is correct. * * @return string */ public function getTable() { // In this example, it's set, but this is better in an abstract class if ( isset( $this->table ) ){ $prefix = $this->getConnection()->db->prefix; return $prefix . $this->table; } return parent::getTable(); } }
从表中检索所有行
$users = $db->table('users')->get(); foreach ($users as $user) { var_dump($user->display_name); }
在这里,users是表名(不包含前缀)。前缀将自动应用。
其他示例
编写模型
use \WeDevs\ORM\Eloquent\Model as Model; class Employee extends Model { } var_dump( Employee::all()->toArray() ); // gets all employees var_dump( Employee::find(1) ); // find employee with ID 1
类名Employee将被转换为PREFIX_employees表以运行查询。但通常,您可以重写表名。
WordPress内建模型
- 帖子
- 评论
- 帖子元数据
- 用户
- 用户元数据
use WeDevs\ORM\WP\Post as Post; var_dump( Post::all() ); //returns only posts with WordPress post_type "post"
通过post_status和post_type过滤Post
use WeDevs\ORM\WP\Post as Post; var_dump(Post::type('page')->get()->toArray()); // get pages var_dump(Post::status('publish')->get()->toArray()); // get posts with publish status var_dump(Post::type('page')->status('publish')->get()->toArray()); // get pages with publish status
工作原理
- Eloquent主要用作查询构建器
- WPDB用于运行由Eloquent构建的查询
- 因此,我们可以使用类似
debug-bar或query-monitor的插件来获取SQL查询报告。 - 它不会创建任何额外的MySQL连接
最低要求
- PHP 5.6.4+
- WordPress 4.0+