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() 來代替, 这将在整个查詢中強制它們。