tareq1988/wp-eloquent
tareq1988/wp-eloquent has 568 GitHub stars and 135 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-11 19:17 UTC. Last push 2022-05-11.
Eloquent ORM for WordPress
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalEloquent Wrapper for WordPress
This is a library package to use Laravel's Eloquent ORM with WordPress.
Package Installation
To install this package, edit your composer.json file:
{
"require": {
"tareq1988/wp-eloquent": "dev-master"
}
}
Now run:
$ composer install
Usage Example
Basic Usage
$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() );
// OR with DB facade
use \WeDevs\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() );
Creating Models For Custom Tables
You can use custom tables of the WordPress databases to create models:
<?php
namespace Whatever;
use WeDevs\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();
}
}
Retrieving All Rows From A Table
$users = $db->table('users')->get();
foreach ($users as $user) {
var_dump($user->display_name);
}
Here users is the table name without prefix. The prefix will be applied automatically.
Other Examples
Writing a Model
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
The class name Employee will be translated into PREFIX_employees table to run queries. But as usual, you can override the table name.
In-built Models for WordPress
- Post
- Comment
- Post Meta
- User
- User Meta
use WeDevs\ORM\WP\Post as Post;
var_dump( Post::all() ); //returns only posts with WordPress post_type "post"
Filter Post by post_status and post_type
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
How it Works
- Eloquent is mainly used here as the query builder
- WPDB is used to run queries built by Eloquent
- Hence, we have the benfit to use plugins like
debug-barorquery-monitorto get SQL query reporting. - It doesn't create any extra MySQL connection
Minimum Requirement
- PHP 5.6.4+
- WordPress 4.0+
Author
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,560 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,830 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,395 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,473 stars