bradchesney79 / propel3
高性能数据映射ORM,可选的active-record特性,适用于快速应用开发(RAD)和现代PHP 7.1+
v0.18.12
2018-11-17 07:00 UTC
Requires
- php: >=7.1
- bramus/monolog-colored-line-formatter: ~2.0
- gossi/php-code-generator: dev-master
- marcj/topsort: 1.1.0
- mustache/mustache: ~2.6
- psr/log: ~1.0
- symfony/config: ^3.0
- symfony/console: ^3.0
- symfony/event-dispatcher: ^3.0
- symfony/filesystem: ^3.0
- symfony/finder: ^3.0
- symfony/yaml: ^3.0
Requires (Dev)
- behat/behat: ^3.3
- monolog/monolog: ~1.3
- phpunit/phpunit: ^6.0
Suggests
- monolog/monolog: The recommended logging library to use with Propel.
This package is not auto-updated.
Last update: 2024-09-18 05:25:41 UTC
README
Propel3是适用于现代PHP 7.1+的开源对象关系映射(ORM)。
它是由比我更好、更聪明的人编写的和维护的——在Packagist上没有现成的Propel3。现在有...
因此,这个github仓库和Packagist条目仅仅是为了让我将其放入我的PHP package.json中,您可以自由使用它。但要知道,一旦有有效的propelorm/propel3 Packagist包可用,我将开始使用那个包而不是维护这个包。
Propel ORM的第三个版本取代了不再维护的Propel2,引入了数据映射实现,将实体与实际的持久化逻辑分离。
状态
这还在开发中,尚未准备好使用。
特性
- 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做出贡献。只需分叉它,然后发送Pull Requests。您必须遵循PSR2编码标准,并提供尽可能多的单元测试。
请参阅我们的贡献指南。谢谢!
许可
请参阅LICENSE文件。
