📄️ 定义实体
实体是简单的 javascript 对象(所谓的 POJO),没有限制,也不需要扩展基类。使用 实体构造函数 也有效 - 它们永远不会为托管实体(从数据库加载)执行。每个实体都需要有一个主键。
📄️ 建模实体关系
MikroORM 中有 4 种类型的实体关系:
📄️ 实体管理器
持久化和刷新
📄️ 更新实体值
使用 assign() 更新实体值
📄️ 工作单元
MikroORM 使用身份映射模式来跟踪对象。每当你从数据库中获取对象时,MikroORM 都会在其 UnitOfWork 中保留对该对象的引用。
📄️ 身份映射
MikroORM 在后台使用身份映射,因此我们始终会获得一个实体的相同实例。
📄️ 集合
OneToMany 和 ManyToMany 属性存储在 Collection 封装器中。
📄️ 查询条件
当你想进行复杂查询时,我们很容易得到大量充满大括号的样板代码:
📄️ 填充关系
MikroORM 能够加载大型嵌套结构,同时保持良好的性能,每个数据库表仅查询一次。假设你有这个嵌套结构:
📄️ 类型安全关系
实体关系映射到实体引用 - 至少具有主键的实体实例。此引用存储在身份映射中,因此从数据库获取相同文档时,你将获得相同的对象引用。
📄️ 事务和并发
从 v3.4 开始,MongoDB 驱动程序 也支持事务。
📄️ 实体存储库
实体存储库是 EntityManager 之上的薄层。它们充当扩展点,因此你可以添加自定义方法,甚至更改现有方法。默认的 EntityRepository 实现只是将调用转发到底层 EntityManager 实例。
📄️ 继承映射
映射超类
📄️ 级联
从 v4.2 开始,级联合并不再可配置(并且对所有关系保持启用状态)。
📄️ 查询构建器
自 v4 以来,默认情况下禁用高亮,并且有 2 个荧光笔可以选择使用(你需要先安装它们)。
📄️ 使用原始 SQL 查询片段
raw() 助手