2014-01-08 29 views
1

我需要刷新,重置或取消設置模型;Yii:如何刷新或取消設置或重置模型?

正常情況下,通過使用for操作,public static $k值應該改變,id確實會改變,但tableName模型方法只被調用一次;

tablename的值將始終爲1,因爲那是$i的fisrt值;

for($i=1;$i<=100;$i++){ 
VillageBuildingKXSlaveM::$server_id = 1; 
VillageBuildingKXSlaveM::$k = $i; 
VillageBuildingKXSlaveM::model()->findAllByAttributes(array()); 
} 

<?php 

class VillageBuildingKXSlaveM extends VillageBuildingKXM { 

    public static function model($className = __CLASS__) { 
     return parent::model($className); 
    } 

    public static $server_id; 
    public static $slave_db; 
    public static $k; 

    public function getDbConnection() { 
     self::$slave_db = Yii::app()->dbx; 
     if (self::$slave_db instanceof CDbConnection) { 
      self::$slave_db->active = false; 
      $config = require(Yii::app()->getBasePath() . '/config/main.php'); 
      $connectionString = $config['components']['dbx']['connectionString']; 
      self::$slave_db->connectionString = sprintf($connectionString, self::$server_id); 
      self::$slave_db->setActive(true); 
      return self::$slave_db; 
     } else 
      throw new CDbException(Yii::t('yii', 'Active Record requires a "db" CDbConnection application component.')); 
    } 

    public function tableName() { 
     return 'village_building_k' . self::$k; 
    } 

} 

回答

4

嘗試使用

VillageBuildingKXSlaveM::model()->unsetAttributes(); 

取消設置在模型 屬性或者你也可以在方法傳遞屬性名稱作爲參數,像

VillageBuildingKXSlaveM::model()->unsetAttributes($attributes); 
+0

這不起作用。無論如何都是10x –

+0

它會像我一直一樣工作。這取決於你在哪裏使用它。嘗試回顯你之後未設置的屬性,看看你是否得到它的值或爲空 –

-1

您可以撥打

VillageBuildingKXSlaveM::model()->tableName(); 
+0

這不起作用;反正10x –

相關問題