https://github.com/ignitekit/wp-orm
Laravel Eloquent inspired package for WordPress
https://github.com/ignitekit/wp-orm
Last synced: 9 months ago
JSON representation
Laravel Eloquent inspired package for WordPress
- Host: GitHub
- URL: https://github.com/ignitekit/wp-orm
- Owner: IgniteKit
- Created: 2020-06-25T19:35:10.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-21T23:01:38.000Z (over 3 years ago)
- Last Synced: 2025-03-30T13:37:01.082Z (10 months ago)
- Language: PHP
- Homepage:
- Size: 37.1 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ORM for WordPress
Laravel Eloquent based ORM for WordPress
This is a fork of the original library written by [Tareq Hasan](https://tareq.co) with some more improvements and changes.
### Package Installation
To install the library run:
```
composer require ignitekit/wp-orm
```
### Usage Example
#### Basic Usage
```php
$db = \IgniteKit\WP\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 \IgniteKit\WP\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
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
- [Queries](http://laravel.com/docs/5.0/queries)
- [Eloquent ORM](http://laravel.com/docs/5.0/eloquent)
### Writing a Model
```php
use \IgniteKit\WP\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
```php
use IgniteKit\WP\ORM\Models\Post as Post;
var_dump( Post::all() ); //returns only posts with WordPress post_type "post"
```
##### Filter `Post` by `post_status` and `post_type`
```php
use IgniteKit\WP\ORM\Models\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](http://codex.wordpress.org/Class_Reference/wpdb) is used to run queries built by Eloquent
- Hence, we have the benfit to use plugins like `debug-bar` or `query-monitor` to get SQL query reporting.
- It doesn't create any extra MySQL connection
### Minimum Requirement
- PHP 5.6.4+
- WordPress 4.0+
### License
```
Copyright (C) 2020 Darko Gjorgjijoski (https://darkog.com)
This file is part of wp-orm
WP ORM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
WP ORM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with WP ORM. If not, see .
```