모델을 새로 고침, 재설정 또는 설정 해제해야합니다.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;
}
}
이 작동하지 않습니다. 어쨌든 10 배 –
그것은 항상 나를 위해 작동합니다. 그것은 당신이 그것을 사용하는 위치에 따라 다릅니다. 당신이 그것을 풀어 놓고있는 속성을 에코하려고 시도하고 값이나 null을 얻었는지 확인하십시오. –