2017 © Pedro Peláez
 

library wp-eloquent

Eloquent ORM for WordPress

image

galatanovidiu/wp-eloquent

Eloquent ORM for WordPress

  • Tuesday, October 10, 2017
  • by rogio
  • Repository
  • 1 Watchers
  • 0 Stars
  • 7 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 52 Forks
  • 0 Open issues
  • 3 Versions
  • 17 % Grown

The README.md

Eloquent Wrapper for WordPress

This is a library package to use Laravel's Eloquent ORM with WordPress., (*1)

Package Installation

To install this package, edit your composer.json file:, (*2)

{
    "require": {
        "tareq1988/wp-eloquent": "dev-master"
    }
}

Now run:, (*3)

$ composer install, (*4)

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:, (*5)

    namespace whatever;


    class CustomTableModel extends \WeDevs\ORM\Eloquent\Model {

        /**
         * Name for table without prefix
         *
         * @var string
         */
        protected $table = 'table_name';


        /**
         * Columns that can be edited - IE not primary key and timestamps if being uses
         */
        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., (*6)

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., (*7)

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-bar or query-monitor to get SQL query reporting.
  • It doesn't create any extra MySQL connection

Minimum Requirement

  • PHP 5.3.0
  • WordPress 3.6+

Author

Tareq Hasan, (*8)

The Versions

10/10 2017

5.5.0.x-dev

5.5.0.9999999-dev https://github.com/galatanovidiu/wp-eloquent

Eloquent ORM for WordPress

  Sources   Download

GPL

The Requires

 

orm plugin wordpress sql eloquent

10/10 2017

5.5.x-dev

5.5.9999999.9999999-dev https://github.com/galatanovidiu/wp-eloquent

Eloquent ORM for WordPress

  Sources   Download

GPL

The Requires

 

orm plugin wordpress sql eloquent

10/10 2017

dev-master

9999999-dev https://github.com/galatanovidiu/wp-eloquent

Eloquent ORM for WordPress

  Sources   Download

GPL

The Requires

 

orm plugin wordpress sql eloquent