Wallogit.com
2017 © Pedro Peláez
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']);
}
...