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