2014-01-08 2 views
1

Мне нужно обновить, сбросить или снять модель;Yii: Как обновить или снять или сбросить модель?

Как правило, при использовании операции for значение public static $k должно меняться, а идентификатор изменяется, но метод модели tableName вызывается только один раз;

Значение tablename всегда будет 1, так как это значение fisrt $i;

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

Он будет работать, как и всегда. Это зависит от того, где вы его используете. попробуйте отозвать атрибут, который вы отключаете после него, и посмотрите, получаете ли вы его значение или значение null –

-1

Вы можете позвонить

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

это не работает; 10x в любом случае –

Смежные вопросы