简介 - Orm 套件
Orm 是 物件关联对映(Object Relational Mapper) 的简写,它做两件事:
对应你资料库里的资料列到物件, 并能让你在这些物件之间建立关係。
它紧随 活动记录模式( Active Record Pattern),但也受到其他系统的影响。
简介
不像其他许多的活动记录(ActiveRecord)实现,我们的小、快速、简单易用。 它试图使从资料库建立、更新、和删除项目尽可能地轻鬆, 它为你做所有辛苦的工作。
安装
Orm 套件包含在 Fuel 的下载中,你所需要做的是在你的配置中启用它。
'always_load' => array(
'packages' => array(
'orm',
),
),
障碍排除
一些常见的问题和频繁的问题。
我的 关联/外键 无法被储存 (1)
这最常发生在使用了错误类型的关联关係。尤其 Has-one 与 Belongs-to 往往搞混。重读文件的例子, 以确认你使用正确的关联类型并检查所有配置是否正确。
我无法关联物件 (2)
确认你的模型是扩充 Orm\Model
而非 Model_Crud
。
我得到一个在 套件/模组 中无法找到我的关联模型的例外。
确认套件或模组已被 Fuel 载入, 否则自动载入器无法找到类别。
并且当配置关联模型 "model_to"
时,确认你配置完整类别名称, 其中包括命名空间,即使你在该命名空间。 字串中的类别名称取自全域範围,无论目前的命名空间。
我得到一个 Orm\FrozenObject 例外
物件在被储存到资料库时不能编辑,以预防循环储存及重複储存已存档的物件。 这不应该发生在正常使用下, 且最常见是因为错误的配置或关联所造成。
有时候可能是错误引起的,尤其当你不是使用稳定发行的版本。
我已经定义了一个限制和偏移,但结果不正确
ORM 始终确保查询的结果是一致的。如果你运行一个包含关联模型的查询, 子查询将被产生以确保整个关联结果集被取回。 即使这意味着比起你已经设定的限制更多的记录将被取回。这是因为, 一旦你开始操作不完整的结果集,非常糟糕的事情可能发生在你的关联模型。
如果你绝对肯定你不会操作该结果,例如,因为你只需要它们的分页, 你可以使用 rows_limit() 和 rows_offset() 来代替, 这将在整个查询中强制它们。