2011-06-24 42 views
0

所以我刚开始学习使用ORM,当我第一次开始学习Ko3时和Jelly一起学习,并遇到了几个问题......他们可能看起来很愚蠢,所以请耐心等待我。关于在Kohana ORM中声明模型的一些问题

首先我注意到声明模型足以开始使用它,而不必分解字段。这是我不知道的一些automagic?如果是这样......是否会导致性能问题,应该避免吗?

我也注意到了两种不同的声明规则的方法......这两种方法有什么区别?

public function rules() { 
    return array(
     'categoryname' => array(
      array('not_empty'), 
     ), 
    ); 
} 

protected $_rules = array(
    'categoryname' => array(
     'not_empty' => true, 
    ), 
); 

回答

2
  1. 是,ORM会自动对空模型调用SHOW COLUMNS。但你可以简单地cache it
  2. rules()在Kohana 3.1中添加(3.0使用$_rules属性)。现在你可以在返回规则列表之前应用一些逻辑。而其机型更好的扩展,例如:
public function rules() 
{ 
    return parent::rules() + array('foo' => 'bar'); 
} 
+0

感谢您一个非常明确的和有益的答案...和链接...如果碰巧你知道答案只是想知道到任何一个机会的最后一个问题......“3.0还会缓存这个元数据交叉请求吗?它只是激发了我的好奇心...... :) – Serhiy

+0

AFAIR,'数据库'模块只缓存当前请求的查询。您必须手动缓存它们(使用'Kohana :: cache()'调用或特殊的'Cache'模块)。或者在'$ table_columns'属性中定义模型字段,这是我认为的最好的方式。 – biakaveron