2011-06-24 48 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