Propel3

高性能数据映射器ORM,具有RAD和现代PHP 7.1+的可选活动记录(active-record)特性。(High performance data-mapper ORM with optional active-record traits for RAD and modern PHP 7.1+.)

Github星跟踪图

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

主要指标

概览
名称与所有者propelorm/Propel3
主编程语言PHP
编程语言Makefile (语言数: 7)
平台Linux, Mac, Windows
许可证MIT License
所有者活动
创建于2017-01-03 15:57:34
推送于2020-07-17 16:57:25
最后一次提交2019-11-09 07:24:53
发布数0
用户参与
星数257
关注者数45
派生数36
提交数4k
已启用问题?
问题数57
打开的问题数23
拉请求数33
打开的拉请求数2
关闭的拉请求数3
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?

Propel3

Propel3 is an open-source Object-Relational Mapping (ORM) for modern PHP 7.1+.

Build Status
Code Climate

PPM Compatible
Gitter

Version 3 of Propel ORM replaces Propel2, which is not maintained anymore.
Propel3 introduces a data-mapper implementation which separates your entities from the actual persisting logic.

Status

This is in current development and is not yet ready to use.

Features

  • Propel is blazing fast
  • Data mapper with runtime UnitOfWork for high performance with massive object counts (bulks inserts/updates)
  • Query-Builder
  • Very IDE friendly thanks to code-generation
  • Generation of methods for all columns and relations
  • Database schema migration
  • Schema reverse engineering
  • Customizable
  • Propel comes with common ‘behaviors’
  • Completely unit tested for MySQL, PostgreSQL, SQLite. Oracle and MSSQL are experimental.

Example

Define the entity

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>
or annotations

In work.


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
}

Data mapper

$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();

Installation

Read the Propel documentation. This documentation is for Propel2 still.

Contribute

Everybody can contribute to Propel. Just fork it, and send Pull Requests.
You have to follow PSR2 coding standards and provides unit tests as much as possible.

Please see our contribution guideline. Thank you!

License

See the LICENSE file.