solis / expressive
PHP 对象关系映射器
v1.7.1
2019-02-25 14:02 UTC
Requires
- doctrine/dbal: ~2.5
- illuminate/database: ^5.4
- illuminate/events: ^5.2
- solis/phpmagic: ~v1.0
Requires (Dev)
- codacy/coverage: dev-master
- phpunit/phpunit: ~v6.0
- squizlabs/php_codesniffer: 3.*
README
Expressive 是一个基于 illuminate/database 并具有基于 schema 文件的对象定义的 ORM 库。
安装
此包通过 composer 安装。
composer require solis/expressive
使用方法
根据 phpschema 的规范定义对象结构。
{
"database": {
"repository": "pessoa",
"keys": "ID"
},
"properties": [
{
"alias": "proID",
"property": "ID",
"type": "int",
"behavior": {
"required": "false",
"autoIncrement": "true"
}
},
{
"alias": "proNome",
"property": "nome",
"type": "string"
},
{
"alias": "proInscricaoFederal",
"property": "inscricaoFederal",
"type": "string"
},
{
"alias": "proTipo",
"property": "tipo",
"type": "int"
},
{
"alias": "proSituacao",
"property": "situacao",
"type": "int",
"behavior": {
"required":"false"
}
}
]
}
使用库提供的 ORM 功能的类必须扩展抽象类 Expressive 并声明 schema json 中指定的属性。
use Solis\Expressive\Classes\Illuminate\Expressive;
use Solis\Expressive\Magic\Concerns\HasMagic;
class Pessoa extends Expressive
{
use HasMagic;
protected $ID;
protected $nome;
protected $inscricaoFederal;
protected $tipo;
protected $situacao;
/**
* Pessoa constructor.
*/
public function __construct()
{
parent::__construct();
$this->start(dirname(__FILE__) . '/Pessoa.json');
}
}
start 方法负责从提供的路径构建 Schema 对象并将其分配给相应的类。
扩展 Expressive 的类必须使用 HasMagic trait 以通过 make 方法访问动态属性分配功能。
$Pessoa = Pessoa::make([
"proNome" => 'Fulano - ' . uniqid(rand()),
"proInscricaoFederal" => '' . rand(11111111111111, 99999999999999) . '',
"proTipo" => 1
]);
make 方法返回一个 ExpressiveAbstract 实例,该实例可以访问库提供的持久化操作。
操作
ExpressiveAbstract 实例可以使用的持久化操作列表
Count
返回表示持久化中记录计数的整数值。
$count = (new Pessoa()) ->count()
//$count = Pessoa::make([])->last($arguments = []);
Create
根据通过 make 构造对象的值创建持久化中的新记录。
Pessoa::make([
"proNome" => 'Fulano - ' . uniqid(rand()),
"proInscricaoFederal" => '' . rand(11111111111111, 99999999999999) . '',
"proTipo" => 1
])->create();
Delete
根据分配给活动记录的信息删除持久化中的记录。
Pessoa::make([
'proID' => 1
])->search()->delete();
Last
根据分配给活动记录的信息返回持久化中的最后一个记录。
(new Pessoa())->last()
//Pessoa::make([])->last();
Replicate
根据分配给活动记录的信息复制持久化中现有的记录。
$instance = Pessoa::make([
'proID' => 1,
])->last();
$instance->replicate();
Search
根据分配给活动记录的信息返回持久化中现有的记录。
$instance = Pessoa::make([
'proID' => 1
])->search();
Select
根据提供的参数和选项返回持久化中现有的记录关系。
$result = (new Pessoa())->select();
//$result = Pessoa::make([])->select($arguments = [], $options = []);
Update
根据分配给活动记录的信息更新持久化中现有的记录。
$instance = Pessoa::make(
[
'proID' => 1,
]
)->search();
$instance->proNome = 'UPDATE TEST [ ' . Date('Y-m-d H:m:s') . ']';
$instance->update();
变更日志
查看 CHANGELOG 了解最近更新信息。
测试
$ composer test
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE。