这个问题实际上可以使用 Kohana 的rules
-system 来解决,如下所示:
Model_User_Image
1 向您添加一个影响父 ID 的验证规则。您可以使用Model_User
指定的方法max_no_images
。
public function rules()
{
return array(
'user_id' => array(
array( array('Model_User', 'max_no_images') ),//automatically use value of the field as parameter
),
);
}
2Model_User
以两种方式改变。首先,您需要一个常量或其他类型的变量来确定允许的最大图像数量。接下来,您将需要定义max_no_images
检查是否已达到最大图像数量(如果已达到,则返回 false)。它可以通过 ORM 轻松完成,但如果您直接使用查询可能会更快。
public static function max_no_images($user_id)
{
$number_of_children = ORM::factory('User', $user_id)->children->count_all();
return ($number_of_children < Model_User::max_children);
}
虽然这里发布的代码没有经过测试,但我做了一个稍微不同的变体,所以这种方法确实有效。在文档中查看他们如何使用同一模型中的指定函数进行验证
cou 可以解决此问题的另一种方法是使用 SQL 规则。我不会多说,你需要在插入/更新图像条目时检查图像的数量,所以从这个想法来看,它与 ORM 方法完全相同。