2012-12-20 32 views
0

在Yii中是否有類型模型的內置支持?例如,如果我有一個名爲Flashlight,Lock和Folder的類,它們都擴展了我的Product活動記錄模型,並且我想通過Yii關係確定它是類型類而不是通用類型,那麼我該怎麼做?獲取基於類型的Yii模型類

目前我正在覆蓋__call,我對此並不滿意。我覺得這可能是一種常見的需求。

回答

2

這叫做single table inheritance

基本上你覆蓋模型的instantiate方法返回你所需要的類:

// protected/models/Product.php 
protected function instantiate($attributes){ 
    switch($attributes['type']){ 
     case 'flashlight': 
      $class='Flashlight'; 
     break; 
     case 'lock': 
      $class='Lock'; 
     break; 
     case 'folder': 
      $class='Folder'; 
     break; 
     default: 
      $class=get_class($this); 
    } 
    $model=new $class(null); 
    return $model; 
} 
+0

同意,它的作品真的很好:-) – acorncom