DB Wrapper for build simple orm in laravel
Laravel Package alternative for Eloquent ORM., (*1)
Begin by pulling in the package through Composer., (*2)
composer require ametsuramet/simple_orm:1.2.*
Or add in the require
key of composer.json
file manually, (*3)
``` json "ametsuramet/simple_orm": "1.2.*", (*4)
Register the ServiceProvider in `config/app.php` ```php 'providers' => [ // ... Amet\SimpleORM\ModelBuilderServiceProvider::class, ],
Add this service provider to your bootstrap/app.php
file., (*5)
$app->register(Amet\SimpleORM\ModelBuilderServiceProvider::class);
The easiest way to create a model instance is using the simple_orm:model
Artisan command:, (*6)
php artisan simple_orm:model Project
or you can use interactive mode:, (*7)
php artisan simple_orm:interactive
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., (*8)
in your controller file:, (*9)
// ... use App\ORM\Project; class yourController extends Controller { public function yourMethod() { $projects = new Project; $projects = $projects->get(); dd($projects); } // ...
or something like this:, (*10)
// ... $projects = (new Project)->get(); dd($projects); // ...
By Default SimpleORM will generate $table attribut, but you can change name of table in Models, (*11)
... class Project extends BaseQuery { protected $table = 'projects'; ...
SimpleORM will also assume that each table has a primary key column named id. You may define a $default_key property to override., (*12)
... class Project extends BaseQuery { protected $default_key = 'uuid'; ...
// ... $projects = new Project; $projects = $projects->where(['id',1])->get(); dd($projects); // ...
or, (*13)
// ... $wheres = [ ['id','>=',10], ['date','>=','2017-01-01'], ]; $projects = new Project; $projects = $projects->where($wheres)->get(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->limit(10)->get(); dd($projects); // ...
you can add offset :, (*14)
// ... $projects = new Project; $projects = $projects->limit(20,10)->get(); dd($projects); // ...
Show deleted only, (*15)
// ... $projects = new Project; $projects = $projects->deleted_only()->get(); dd($projects); // ...
As noted above, soft deleted models will automatically be excluded from query results, you can use this method to include deleted records, (*16)
// ... $projects = new Project; $projects = $projects->deleted(true)->get(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->info(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->orderBy('id')->get(); dd($projects); // ...
or, (*17)
// ... $projects = new Project; $projects = $projects->orderBy('id','desc')->get(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->groupBy('id')->get(); dd($projects); // ...
or, (*18)
// ... $projects = new Project; $projects = $projects->groupBy(['id','date'])->get(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->insert(["name" => 'new project']); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->update(29,["name" => 'new project']); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->delete(29); // ...
// ... $projects = new Project; $projects = $projects->get(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->first(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->find(29); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->last(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->paginate($params); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->set_show_column(['id','first_name','last_name'])->get(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->hide_relation()->get(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->count(); dd($projects); // ...
// ... $projects = new Project; $projects = $projects->getQueryLog(); dd($projects); // ...
... class Project extends BaseQuery { public function user() { $this->hasOne(User:class,'id','user_id','user'); } ...
with show_column, (*19)
... class Project extends BaseQuery { public function user() { $this->hasOne(User:class,'id','user_id','user',['id','first_name','last_name']); } ...
... class Project extends BaseQuery { public function user() { $this->hasOne(User:class,'id','user_id','user'); } ...
with show_column, (*20)
... class Project extends BaseQuery { public function user() { $this->hasOne(User:class,'id','user_id','user',['id','first_name','last_name']); } ...
... 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, (*21)
... 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']); } ...