bradchesney79/propel3

高性能数据映射ORM,可选的active-record特性,适用于快速应用开发(RAD)和现代PHP 7.1+

v0.18.12 2018-11-17 07:00 UTC

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包可用,我将开始使用那个包而不是维护这个包。

Build Status Code Climate PPM Compatible Gitter

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文件。