限制了许多Kohana ORM的关系

时间:2013-08-20 09:32:19

标签: kohana kohana-3 kohana-orm

我有两个模型,它们具有以下关系:

class Model_User extends ORM
{
    protected $_has_many = array(
        'images' => array('model' => 'User_Image')
    );
}

class Model_User_Image extends ORM
{
    protected $_belongs_to = array(
        'usedvehicle' => array(),
    );
}

限制用户图片数量的最佳方法是什么?我想通过在Model_User_Image类中声明const MAX = 3来设置限制,然后使用此值来检查当前的images数。有没有办法通过关系或规则来限制它?

1 个答案:

答案 0 :(得分:1)

使用Kohana的rules系统实际上可以解决这个问题,如下所示:

1向Model_User_Image添加影响父级ID的验证规则。您可以使用指定方法Model_User的{​​{1}}。

max_no_images

2以两种方式更改public function rules() { return array( 'user_id' => array( array( array('Model_User', 'max_no_images') ),//automatically use value of the field as parameter ), ); } 。首先,您需要一个常量或其他类型的变量来确定允许的最大图像数。接下来,您需要定义Model_User,在其中检查是否已达到最大图像数(如果是,则返回false)。它可以通过ORM轻松完成,但如果直接使用查询可能会更快。

max_no_images

虽然此处发布的代码未经过测试,但我的变体略有不同,所以这种方法确实有效。看看他们如何使用a specified function from the same model for validation in the documentation


cou可以解决此问题的另一种方法是使用SQL规则。我不会说更多,你需要在插入/更新图像条目时检查图像的数量,所以从这个想法来看它与ORM方法完全相同。