cycle/orm

PHP 数据映射 ORM 和数据建模引擎

资助包维护!
cycle

安装次数: 517 501

依赖者: 65

建议者: 1

安全: 0

星星: 1 216

观察者: 28

分支: 72

开放问题: 82

v2.9.0 2024-06-05 13:14 UTC

README

Latest Stable Version Build Status Scrutinizer Code Quality Codecov

Cycle ORM

Cycle 是一个 PHP 数据映射器、ORM 和数据建模引擎,旨在在经典和高级 PHP 应用程序(如 RoadRunner)中安全工作。ORM 提供灵活的配置选项来建模数据集,强大的查询构建器,并支持动态映射模式。该引擎可以与普通 PHP 对象一起工作,支持注解声明,并通过扩展进行代理。

网站和文档 | 与 Eloquent 和 Doctrine 的比较

特性

  • ORM 具有一对一、一对多、多对多和多态关系
  • 普通 PHP 对象,AR,自定义对象或同一实体类型的多仓库
  • 预加载和延迟加载,具有多种获取策略的查询构建器
  • 嵌入式实体,延迟/预加载的嵌入式部分
  • 运行时配置,带或不带代码生成
  • 列到字段映射,单表继承,值对象支持
  • 可定制:持久策略、映射器、关系、事务
  • 使用命令链在有向图和循环图中工作
  • 专为长时间运行的应用程序设计:不可变服务核心,可丢弃的 UoW
  • 支持 MySQL、MariaDB、PostgresSQL、SQLServer、SQLite
  • 模式脚手架、元数据、迁移和调试
  • 支持全局查询作用域、UUID 作为主键、软删除、自动时间戳和宏
  • 自定义列类型,非主键列的外键
  • 带或不带注解、代理类和自动迁移使用
  • 与 Doctrine Collections、Illuminate Collections 和自定义集合兼容
  • 与 Doctrine Annotations、PHP8 属性兼容

扩展

示例

// load all active users and pre-load their paid orders sorted from newest to olders
// the pre-load will be complete using LEFT JOIN
$users = $orm->getRepository(User::class)
    ->select()
    ->where('active', true)
    ->load('orders', [
        'method' => Select::SINGLE_QUERY,
        'load'   => function($q) {
            $q->where('paid', true)->orderBy('timeCreated', 'DESC');
        }
    ])
    ->fetchAll();

$em = new EntityManager($orm);

foreach($users as $user) {
    $em->persist($user);
}

$em->run();

许可

MIT 许可证 (MIT)。有关更多信息,请参阅LICENSE。由 Spiral Scout 维护。