ametsuramet / simple_orm
用于在 Laravel 中构建简单 ORM 的数据库包装器
v1.2.6
2017-08-10 10:49 UTC
Requires
- php: >=5.3.0
README
Laravel Eloquent ORM 的替代品。
安装
首先,通过 Composer 拉取此包。
composer require ametsuramet/simple_orm:1.2.*
或手动在 composer.json
文件的 require
键中添加
"ametsuramet/simple_orm": "1.2.*"
在 config/app.php
中注册 ServiceProvider
'providers' => [ // ... Amet\SimpleORM\ModelBuilderServiceProvider::class, ],
对于 Lumen
将此服务提供者添加到您的 bootstrap/app.php
文件中。
$app->register(Amet\SimpleORM\ModelBuilderServiceProvider::class);
定义模型
创建模型实例的最简单方法是使用 simple_orm:model
Artisan 命令
php artisan simple_orm:model Project
或者您可以使用交互模式
php artisan simple_orm:interactive
命令选项
php artisan simple_orm:model Project --soft_delete=1 --methods=transactions,users --default_key=uuid --migration=1
所有模型都将放置在 app/ORM
文件夹中。
用法
在您的控制器文件中
// ... use App\ORM\Project; class yourController extends Controller { public function yourMethod() { $projects = new Project; $projects = $projects->get(); dd($projects); } // ...
或者像这样
// ... $projects = (new Project)->get(); dd($projects); // ...
表名
默认情况下,SimpleORM 会生成 $table 属性,但您可以在模型中更改表名
... class Project extends BaseQuery { protected $table = 'projects'; ...
默认键
SimpleORM 还会假设每个表都有一个名为 id 的主键列。您可以使用 $default_key 属性来覆盖。
... class Project extends BaseQuery { protected $default_key = 'uuid'; ...
公开方法
where((array) $params)
// ... $projects = new Project; $projects = $projects->where(['id',1])->get(); dd($projects); // ...
或者
// ... $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); // ...
您可以添加偏移量
// ... $projects = new Project; $projects = $projects->limit(20,10)->get(); dd($projects); // ...
deleted_only()
仅显示已删除的
// ... $projects = new Project; $projects = $projects->deleted_only()->get(); dd($projects); // ...
deleted((boolean) $params)
如上所述,软删除的模型将自动从查询结果中排除,您可以使用此方法包括已删除的记录
// ... $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); // ...
或者
// ... $projects = new Project; $projects = $projects->orderBy('id','desc')->get(); dd($projects); // ...
groupBy()
// ... $projects = new Project; $projects = $projects->groupBy('id')->get(); dd($projects); // ...
或者
// ... $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); // ...
关系
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'); } ...
带有 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'); } ...
带有 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); } ...
带有 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']); } ...