analogue / orm
适用于 PHP 和 Laravel 的直观数据映射 ORM
v6.2.0
2020-04-14 01:14 UTC
Requires
- php: >=7.2.0
- doctrine/instantiator: ^1.0.0
- illuminate/database: 6.0.* | 6.1.* | 6.2.*
- illuminate/events: 6.0.* | 6.1.* | 6.2.*
- illuminate/pagination: 6.0.* | 6.1.* | 6.2.*
- ocramius/generated-hydrator: ^2.0.0
- ocramius/proxy-manager: ^2.0.0
- psr/container: ~1.0
- psr/simple-cache: ~1.0
Requires (Dev)
- analogue/factory: 1.2.*|1.3.*
- fzaninotto/faker: ~1.4
- laravel/browser-kit-testing: ^1.0
- laravel/laravel: 6.0.* | 6.1.* | 6.2.*
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~8.0
- symfony/css-selector: 2.8.*|3.0.*|4.0.*
- symfony/dom-crawler: 2.8.*|3.0.*|4.0.*
Suggests
- analogue/factory: Create simple dummy entities for your tests
- analogue/laravel-auth: Analogue's authentication driver for Laravel.
- analogue/mongodb: MongoDB driver for Analogue ORM
- 6.2.x-dev
- v6.2.0
- 6.0.x-dev
- v6.0.1
- v6.0.0
- 5.6.x-dev
- v5.6.15
- v5.6.14
- v5.6.13
- v5.6.12
- v5.6.11
- v5.6.10
- v5.6.9
- v5.6.8
- v5.6.7
- v5.6.6
- v5.6.5
- v5.6.4
- v5.6.3
- v5.6.2
- v5.6.1
- v5.6.0
- 5.5.x-dev
- v5.5.22
- v5.5.21
- v5.5.20
- v5.5.19
- v5.5.18
- v5.5.17
- v5.5.16
- v5.5.15
- v5.5.14
- v5.5.13
- v5.5.12
- v5.5.11
- v5.5.10
- v5.5.9
- v5.5.8
- v5.5.7
- v5.5.6
- v5.5.4
- v5.5.3
- v5.5.2
- v5.5.1
- v5.5.0
- 5.4.x-dev
- v5.4.2
- v5.4.1
- v5.4.0
- 5.3.x-dev
- v5.3.2
- v5.3.1
- v5.3.0
- v5.2.5
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2
- 5.1.x-dev
- v5.1.9
- 5.1.8
- v5.1.7
- v5.1.6
- v5.1.5
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1
- 5.0.x-dev
- v5.0.2
- v5.0.1
- v5.0
- v2.1.10
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.1
- v2.0
- 1.0.x-dev
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-analysis-2QAAJd
- dev-laravel_6.1_laravel_6.2
- dev-analysis-0g77AM
- dev-master
- dev-laravel-6.x-support
- dev-analysis-wjWwG2
- dev-fix/inheritance-eager-loading
This package is auto-updated.
Last update: 2024-09-14 11:30:35 UTC
README
(本项目正在寻找新的维护者)
Analogue ORM
Analogue 是一个灵活、易于使用的 ORM,适用于 PHP。它通过使用 Data Mapper 模式代替原始的 Active Record 方法,将随 Laravel 框架一起提供的 Eloquent ORM 进行了转换。通过使用严格的关注点分离;例如,您可以使用 Value Objects 或 Single-table-inheritance,这在原生 ORM 中很难/无法正确实现。
作为一个 Laravel 包,它完美地集成在框架中,并提供了一个更强大的持久层,在保持简单和愉悦的开发体验的同时,允许构建企业级应用程序。
安装
composer require analogue/orm
有关更多信息,请参阅 配置。
概念
概念很简单;您的模型层使用 2 个类定义:一个 Entity,可以是任何 PHP 类或扩展基础 Analogue\ORM\Entity 类(它提供了魔法获取器和设置器),以及一个 EntityMap,它定义关系、转换、表名和数据库列名。
例如,这是一个简单的领域模型
use Analogue\ORM\Entity; use Illuminate\Support\Collection; class Blog extends Entity { public function __construct() { $this->posts = new Collection; } public function addPost(Post $post) { $this->posts->push($post); } } class Post extends Entity { }
我们可以使用这些类来指导 Analogue 如何将这些对象关联起来
use Analogue\ORM\EntityMap; class BlogMap extends EntityMap { public function posts(Blog $blog) { return $this->hasMany($blog, Post::class); } } class PostMap extends EntityMap { public function blog(Post $post) { return $this->belongsTo($post, Blog::class); } }
现在我们可以创建相关实例或对象并将它们持久化到数据库中
$blog = new Blog; $blog->title = "My first blog"; $post = new Post; $post->title->"My first post"; $blog->addPost($post); // Only the blog instance need to explicitely stored; Analogue takes care of synchronizing // related objects behinds the scene. mapper(Blog::class)->store($blog);
一旦我们的对象被持久化到数据库中,我们就可以使用流畅的查询构建器来查询它们
$blog = mapper(Blog::class)->first(); echo $blog->posts->first()->title; // 'My first post'
文档
有关更多详细信息,请参阅 文档。
特性
- 框架无关性
- 懒加载
- 急加载
- 时间戳
- 软删除
- 值对象
- 多态关系
- 动态关系
- 单表继承
- 将实体转换为数组 / JSON
- 灵活的事件系统
- 原生多数据库连接支持
- 通过自定义数据库驱动程序/插件进行扩展
更新日志
版本 5.6
- Laravel 5.6 支持
- 恢复映射名称与属性名称不相同的 DB 列的能力。
- 添加将 DB 青蛇命名法列映射到实体上的驼峰命名属性的能力。
版本 5.5
- Laravel 5.5 支持
- 将最小要求提升到 PHP7
- 通过基于反射的活化/脱水实现了对纯 PHP 对象的完整支持。
- 改进了懒加载代理。
- 新的、更灵活的值对象实现,现在可以作为
embedsOne()
、embedsMany()
关系来定义。 - 嵌入的值对象现在可以存储为 mysql JSON 字段。
- Analogue 实体现在可以使用 Laravel 的
IoC 容器
或任何 PSR-11 兼容的容器来实例化。 - 添加了 MongoDB 驱动程序。
- 包自动发现(L5.5)
版本 5.4
- Illuminate 5.4 兼容性。
- 添加将 DB 列名称映射为与属性名称不匹配的能力。
版本 5.3
- Illuminate 5.3 兼容性。
- 现在完全支持单表继承。
版本 5.1
- Illuminate 5.1 + 5.2 兼容性。
版本 5.0
- Analogue 版本现在与 illuminate 版本同步。
版本 2.1.3
- 基础实体类中的 Mutator 功能。
- 能够在不进行懒加载的情况下将实体添加到代理集合中。
版本 2.1
- 包现在是框架无关的。
- 现在支持实现 Mappable 接口的任何普通对象。
- 引入 MappableTrait 以快速实现。
- 现在可以直接在映射对象上运行查询。
- 存储/删除方法现在接受数组和集合作为参数。
- 当实体映射与实体在同一命名空间中时,会自动检测实体映射。
- 基础实体类支持隐藏属性。
- 许多与工作流相关的改进。
版本 2.0
- 支持 Laravel 5。
文档
有关完整文档,请查看 wiki。
许可证
本软件包受 MIT 许可证 许可。