Propel3
Propel3是一款面向现代PHP 7.1+的开源对象关系映射(ORM)。
Propel ORM的版本3取代了 Propel2 ,这不再被维护。 Propel3引入了一个数据映射器实现,它将实体与实际的持久逻辑分开。
状态
目前处于开发中,尚未准备好使用。
特性
- Propel速度非常快
- 具有运行时UnitOfWork的数据映射器,具有大量对象计数的高性能(批量插入/更新)
- 查询-生成器
- 代码生成非常适合IDE
- 生成所有列和关系的方法
- 数据库模式迁移
- 模式逆向工程
- 定制
- Propel带有常见的“行为”
- 完全针对MySQL、PostgreSQL和SQLite进行单元测试。 Oracle和MSSQL是实验性的。
示例
定义实体
XML
<database name="default">
<entity name="Vendor\Car">
<field name="id" primaryKey="true" autoIncrement="true" type="INTEGER" />
<field name="name" type="VARCHAR" required="true" />
<relation target="Publisher" onDelete="setnull"/>
<relation target="Author" onDelete="setnull" onUpdate="cascade"/>
</entity>
</database>
或标注
在开发中。
namespace Vendor
use Propel\Annotations\Entity;
use Propel\Annotations\Field;
use Propel\Annotations\PrimaryKey;
/**
* @Entity()
*/
class Car
{
/**
* @PrimaryKey(auto_increment=true)
*/
private $id;
/**
* @Field(type="VARCHAR")
*/
private $name;
// getters/setters
}
数据映射器
$propel = new Propel\Runtime\Configuration('path/to/propel.yml');
// require a session for each request/workload
$session = $propel->getSession();
$car = new Vendor\Car();
$car->setName('Ford');
$session->persist($car);
$session->commit();
RAD/Active-record
// use <entity name="Vendor\Car" activeRecord="true">
$car = new Vendor\Car();
$car->setName('Ford');
$car->save();
安装
阅读 Propel文档。该文档仍然适用于Propel2。
贡献
每个人都可以为Propel做出贡献。只需将它分叉,并发送合并请求。 您必须遵循 PSR2 conding标准并尽可能提供单元测试。
请参阅我们的贡献指南。谢谢!
许可证
请参阅 LICENSE 文件。

