All Projects → propelorm → Propel3

propelorm / Propel3

Licence: mit
High performance data-mapper ORM with optional active-record traits for RAD and modern PHP 7.2+

Labels

Projects that are alternatives of or similar to Propel3

Kuery
Strongly typed SQL in Kotlin
Stars: ✭ 199 (-15.32%)
Mutual labels:  orm
Express Starter
It's a hackathon-starter fork, but designed to use PostgreSQL by default (or MySQL)
Stars: ✭ 215 (-8.51%)
Mutual labels:  orm
Db
Data access layer for PostgreSQL, CockroachDB, MySQL, SQLite and MongoDB with ORM-like features.
Stars: ✭ 2,832 (+1105.11%)
Mutual labels:  orm
Java Library Examples
💪 example of common used libraries and frameworks, programming required, don't fork man.
Stars: ✭ 204 (-13.19%)
Mutual labels:  orm
Nutz
Nutz -- Web Framework(Mvc/Ioc/Aop/Dao/Json) for ALL Java developer
Stars: ✭ 2,422 (+930.64%)
Mutual labels:  orm
Auditor Bundle
Doctrine audits logs made easy.
Stars: ✭ 221 (-5.96%)
Mutual labels:  orm
Awesome Sqlalchemy
A curated list of awesome tools for SQLAlchemy
Stars: ✭ 2,316 (+885.53%)
Mutual labels:  orm
Quickperf
QuickPerf is a testing library for Java to quickly evaluate and improve some performance-related properties
Stars: ✭ 231 (-1.7%)
Mutual labels:  orm
Jackknife
⚔️ 金轮法王,哦不,是轮子大师带你玩转Android,是时候尝试下MVVM了。这是一个Android应用开发全家桶库,支持Kotlin+MVVM+Dagger2+Retrofit架构。
Stars: ✭ 215 (-8.51%)
Mutual labels:  orm
Spring Data Jpa Entity Graph
Spring Data JPA extension allowing full dynamic usage of EntityGraph on repositories
Stars: ✭ 221 (-5.96%)
Mutual labels:  orm
Rustorm
an orm for rust
Stars: ✭ 205 (-12.77%)
Mutual labels:  orm
Aqueduct
Dart HTTP server framework for building REST APIs. Includes PostgreSQL ORM and OAuth2 provider.
Stars: ✭ 2,412 (+926.38%)
Mutual labels:  orm
Ronin
Ronin is a Ruby platform for vulnerability research and exploit development. Ronin allows for the rapid development and distribution of code, Exploits or Payloads, Scanners, etc, via Repositories.
Stars: ✭ 220 (-6.38%)
Mutual labels:  orm
Sequelize Auto
Automatically generate bare sequelize models from your database.
Stars: ✭ 2,494 (+961.28%)
Mutual labels:  orm
Dapper.lnskydb
基于Dapper的LINQ扩展,支持Lambda表达式,支持按时间分库分表,也可以自定义分库分表方法,且实体类有T4模版自动生成.省去手写实体类的麻烦。已在实际项目使用
Stars: ✭ 228 (-2.98%)
Mutual labels:  orm
Malagu
Malagu Development Framework (QQ: 1013685855 钉钉群:31992376)
Stars: ✭ 196 (-16.6%)
Mutual labels:  orm
Piccolo
A fast, user friendly ORM and query builder which supports asyncio.
Stars: ✭ 219 (-6.81%)
Mutual labels:  orm
Gosql
🐥The very simple ORM library for Golang
Stars: ✭ 233 (-0.85%)
Mutual labels:  orm
Pony
Pony Object Relational Mapper
Stars: ✭ 2,762 (+1075.32%)
Mutual labels:  orm
Clear
Advanced ORM between postgreSQL and Crystal
Stars: ✭ 220 (-6.38%)
Mutual labels:  orm

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].