2014-01-08 2 views
1

모델을 새로 고침, 재설정 또는 설정 해제해야합니다.Yii : 모델을 새로 고치거나 설정을 해제하거나 재설정하는 방법은 무엇입니까?

일반적으로 for 연산을 사용하면 public static $k 값이 변경되고 id는 변경되지만 tableName 모델 메서드는 한 번만 호출됩니다.

tablename의 값은 $i의 fisrt 값이므로 항상 1입니다.

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

이 작동하지 않습니다. 어쨌든 10 배 –

+0

그것은 항상 나를 위해 작동합니다. 그것은 당신이 그것을 사용하는 위치에 따라 다릅니다. 당신이 그것을 풀어 놓고있는 속성을 에코하려고 시도하고 값이나 null을 얻었는지 확인하십시오. –

-1

당신은

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

이것은 작동하지 않습니다. 어쨌든 10x –

관련 문제