我試圖爲我的一個ORM模型獲取一些驗證設置。
我有2個表:父母和孩子。在子表中,有一個名爲'parent'的列,其值是父表中行的主ID。
我想要做的是創建一個驗證規則,檢查父表中檢測父實際存在的父ID。
有沒有簡單的方法來做到這一點?
我試圖爲我的一個ORM模型獲取一些驗證設置。
我有2個表:父母和孩子。在子表中,有一個名爲'parent'的列,其值是父表中行的主ID。
我想要做的是創建一個驗證規則,檢查父表中檢測父實際存在的父ID。
有沒有簡單的方法來做到這一點?
嗯,我確實想出了一個解決方案。我在Model類中創建了一個靜態方法,它接受一個ID作爲參數,並檢查該行是否存在。
所以我Model_Child有規則功能,像這樣:
public function rules()
{
return array(
'parent' => array(
// will call Model_Parent::exists($value)
array(array('Model_Parent', 'exists'))
)
);
}
然後我Model_Parent有以下幾點:
public static function exists($id) {
$results = DB::select('*')->from('parent')->where('id', '=', $id)->execute()->as_array();
if(count($results) == 0)
return FALSE;
else
return TRUE;
}
這是爲我工作。有沒有更優雅的適當的解決方案?
在MySQL中(因爲這個問題被標記爲mysql),您可以定義父表和子表之間的外鍵關係,並將該問題留給系統。
好吧,它看起來像是阻止在表中創建條目。如果外鍵約束失敗,Kohana拋出一個數據庫異常。我想我正在尋找更多Kohana特定的解決方案,所以我刪除了MySQL標籤。感謝您的幫助! – krische 2012-03-06 03:48:20