ametsuramet/simple_orm
| Install | |
|---|---|
composer require ametsuramet/simple_orm |
|
| Latest Version: | v1.2.6 |
| PHP: | >=5.3.0 |
| License: | MIT |
| Last Updated: | Aug 10, 2017 |
| Links: | GitHub · Packagist |
Simple ORM for LARAVEL
Laravel Package alternative for Eloquent ORM.
Installation
Begin by pulling in the package through Composer.
composer require ametsuramet/simple_orm:1.2.*
Or add in the require key of composer.json file manually
"ametsuramet/simple_orm": "1.2.*"
Register the ServiceProvider in config/app.php
'providers' => [
// ...
Amet\SimpleORM\ModelBuilderServiceProvider::class,
],
For Lumen
Add this service provider to your bootstrap/app.php file.
$app->register(Amet\SimpleORM\ModelBuilderServiceProvider::class);
Defining Models
The easiest way to create a model instance is using the simple_orm:model Artisan command:
php artisan simple_orm:model Project
or you can use interactive mode:
php artisan simple_orm:interactive
Command Options
php artisan simple_orm:model Project --soft_delete=1 --methods=transactions,users --default_key=uuid --migration=1
All models will placed in app/ORM folder.
Usage
in your controller file:
// ...
use App\ORM\Project;
class yourController extends Controller {
public function yourMethod()
{
$projects = new Project;
$projects = $projects->get();
dd($projects);
}
// ...
or something like this:
// ...
$projects = (new Project)->get();
dd($projects);
// ...
Table Names
By Default SimpleORM will generate $table attribut, but you can change name of table in Models
...
class Project extends BaseQuery
{
protected $table = 'projects';
...
Default Keys
SimpleORM will also assume that each table has a primary key column named id. You may define a $default_key property to override.
...
class Project extends BaseQuery
{
protected $default_key = 'uuid';
...
Public Method
where((array) $params)
// ...
$projects = new Project;
$projects = $projects->where(['id',1])->get();
dd($projects);
// ...
or
// ...
$wheres = [
['id','>=',10],
['date','>=','2017-01-01'],
];
$projects = new Project;
$projects = $projects->where($wheres)->get();
dd($projects);
// ...
limit((int) $params, (int) $params)
// ...
$projects = new Project;
$projects = $projects->limit(10)->get();
dd($projects);
// ...
you can add offset :
// ...
$projects = new Project;
$projects = $projects->limit(20,10)->get();
dd($projects);
// ...
deleted_only()
Show deleted only
// ...
$projects = new Project;
$projects = $projects->deleted_only()->get();
dd($projects);
// ...
deleted((boolean) $params)
As noted above, soft deleted models will automatically be excluded from query results, you can use this method to include deleted records
// ...
$projects = new Project;
$projects = $projects->deleted(true)->get();
dd($projects);
// ...
info()
// ...
$projects = new Project;
$projects = $projects->info();
dd($projects);
// ...
orderBy((string) $params, (string) $params)
// ...
$projects = new Project;
$projects = $projects->orderBy('id')->get();
dd($projects);
// ...
or
// ...
$projects = new Project;
$projects = $projects->orderBy('id','desc')->get();
dd($projects);
// ...
groupBy()
// ...
$projects = new Project;
$projects = $projects->groupBy('id')->get();
dd($projects);
// ...
or
// ...
$projects = new Project;
$projects = $projects->groupBy(['id','date'])->get();
dd($projects);
// ...
insert((array) $params)
// ...
$projects = new Project;
$projects = $projects->insert(["name" => 'new project']);
dd($projects);
// ...
update($id,(array) $params)
// ...
$projects = new Project;
$projects = $projects->update(29,["name" => 'new project']);
dd($projects);
// ...
delete($id)
// ...
$projects = new Project;
$projects = $projects->delete(29);
// ...
get()
// ...
$projects = new Project;
$projects = $projects->get();
dd($projects);
// ...
first()
// ...
$projects = new Project;
$projects = $projects->first();
dd($projects);
// ...
find($id)
// ...
$projects = new Project;
$projects = $projects->find(29);
dd($projects);
// ...
last()
// ...
$projects = new Project;
$projects = $projects->last();
dd($projects);
// ...
paginate((int) $params)
// ...
$projects = new Project;
$projects = $projects->paginate($params);
dd($projects);
// ...
set_show_column((array) $params)
// ...
$projects = new Project;
$projects = $projects->set_show_column(['id','first_name','last_name'])->get();
dd($projects);
// ...
hide_relation()
// ...
$projects = new Project;
$projects = $projects->hide_relation()->get();
dd($projects);
// ...
count()
// ...
$projects = new Project;
$projects = $projects->count();
dd($projects);
// ...
getQueryLog()
// ...
$projects = new Project;
$projects = $projects->getQueryLog();
dd($projects);
// ...
Relation
hasOne($relation_table,$relation_key,$table_key,$relation_name,$show_column(optional))
...
class Project extends BaseQuery
{
public function user()
{
$this->hasOne(User:class,'id','user_id','user');
}
...
with show_column
...
class Project extends BaseQuery
{
public function user()
{
$this->hasOne(User:class,'id','user_id','user',['id','first_name','last_name']);
}
...
hasMany($relation_table,$relation_key,$table_key,$relation_name,$show_column(optional))
...
class Project extends BaseQuery
{
public function user()
{
$this->hasOne(User:class,'id','user_id','user');
}
...
with show_column
...
class Project extends BaseQuery
{
public function user()
{
$this->hasOne(User:class,'id','user_id','user',['id','first_name','last_name']);
}
...
manyToMany($relation_table,$relation_key,$table_key,$relation_name,$pivot_table,$show_column(optional))
...
class Project extends BaseQuery
{
public function user()
{
$pivot_table = [UserProject::class,'user_id','company_id'];
$this->manyToMany(User:class,'id','user_id','user',$pivot_table);
}
...
with show_column
...
class Project extends BaseQuery
{
public function user()
{
$pivot_table = [UserProject::class,'user_id','company_id'];
$this->manyToMany(User:class,'id','user_id','user',$pivot_table,['id','first_name','last_name']);
}
...