我正在尝试为我的一个ORM模型进行一些验证设置。
我有2张桌子:父母和孩子。在children表中,有一个名为“parent”的列,其值是父表中行的主ID。
我正在尝试做的是创建一个验证规则,检查父表中实际存在的父ID。
有一种简单的方法吗?
答案 0 :(得分:1)
我确实提出了一个解决方案。我在我的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;
}
这对我有用。是否有更优雅或正确的解决方案?
答案 1 :(得分:0)
在MySQL中(因为这个问题标记为mysql),您可以在父表和子表之间定义外键关系,并将该问题留给系统。