2017 © Pedro Peláez
 

library eloquent

eloquent support for combi

image

combi/eloquent

eloquent support for combi

  • Thursday, September 14, 2017
  • by andares
  • Repository
  • 1 Watchers
  • 0 Stars
  • 3 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Combi Eloquent

Eloquent support for PHP\Combi Framework., (*1)

How to use

  1. Create combi project(if not)
composer create-project combi/combi=dev-master myapp
  1. Require combi/eloquent
composer require combi/eloquent=dev-master
  1. Configure database connection
mkdir src/config/eloquent/databases.neon
vim src/config/eloquent/databases.neon

Enter connection config like this:, (*2)

default:
    driver:     mysql
    host:       127.0.0.1
    port:       3306
    database:   mydb
    username:   root
    password:   123456
    charset:    utf8mb4
    collation:  utf8mb4_general_ci
    prefix:     ''
  1. Try to use
use Combi\Eloquent as DB;

foreach (DB::table('users')->get() as $entry) {
    helper::du($entry->toArray());
}
  1. Use entity

Declare entity:, (*3)

use Combi\{
    Helper as helper,
    Abort as abort,
    Runtime as rt
};

use Illuminate\Database\Eloquent\SoftDeletes;

/**
 *
 *
 * @property int $id
 * @property string $name
 * @property string $pass
 * @property string $email
 * @property string $nickname
 * @property int $gender
 * @property string $birthday
 */
class User extends Combi\Eloquent\Entity
{
    use SoftDeletes;

    protected $table    = 'users';
    protected $dates    = ['deleted_at'];

    protected $fillable = [
        'email',
        'nickname',
        'gender',
        'birthday',
    ];
    protected $casts = [
        'id'        => 'integer',
        'name'      => 'string',
        'pass'      => 'string',
        'email'     => 'string',
        'nickname'  => 'string',
        'gender'    => 'integer',
        'birthday'  => 'datetime',
    ];
}

And use it:, (*4)

$user = new User();
$user->name     = 'abc'.mt_rand(10000, 99999);
$user->pass     = md5('123123');
$user->email    = $user->name.'@xxx.com';
$user->nickname = $user->name.'-nick';
$user->gender   = mt_rand(1, 2);
$user->birthday = '2017-10-11 '.date('H:i:s');
$user->save();

$user2 = User::query()->where('name', 'somename')->first();

Use Cabin

Cabin is an entry container in a combi action. It will control entry load only once in an action, and will auto save the changes when action is done., (*5)

like this:, (*6)

$user = User::find(2);
$user->name = 'def'.mt_rand(10000, 99999);
// and it will auto save when action done.

for ($i = 0; $i < 1000; $i++) {
    User::find(1);
}
// it will load once by db.

If you do not want to use cabin, make entity proporty protected $_cabin_id=null., (*7)

If want disable auto release feature, make config file src/config/eloquent/settings.neon like:, (*8)

cabin:
    auto_release:
        #-   0   # release default cabin when action done

The Versions

14/09 2017

dev-master

9999999-dev

eloquent support for combi

  Sources   Download

MPL2.0

The Requires

 

The Development Requires

framework eloquent mysql db