【问题标题】:Kohana ORM: Validate the $_belongs_to relationship existsKohana ORM:验证 $_belongs_to 关系是否存在
【发布时间】:2012-03-05 21:48:52
【问题描述】:

我正在尝试为我的一个 ORM 模型设置一些验证设置。

我有两张桌子:父母和孩子。在子表中,有一个名为“父”的列,其值是父表中一行的主 ID。

我要做的是创建一个验证规则,检查指定的父 ID 是否确实存在于父表中。

有没有简单的方法来做到这一点?

【问题讨论】:

    标签: php validation orm kohana


    【解决方案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;
    }
    

    这对我有用。有没有更优雅或更合适的解决方案?

    【讨论】:

      【解决方案2】:

      在 MySQL 中(因为这个问题被标记为 mysql),你定义了父表和子表之间的外键关系,并将这个问题留给系统。

      【讨论】:

      • 好吧,它看起来确实阻止了在表中创建条目。如果外键约束失败,Kohana 会抛出数据库异常。我想我正在寻找更具体的 Kohana 解决方案,所以我删除了 MySQL 标签。不过感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2011-03-24
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多