芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/xmintal-back/vendor/yiisoft/yii2/test/ActiveFixture.php
* @since 2.0 */ class ActiveFixture extends BaseActiveFixture { /** * @var string|null the name of the database table that this fixture is about. If this property is not set, * the table name will be determined via [[modelClass]]. * @see modelClass */ public $tableName; /** * @var string|bool|null the file path or [path alias](guide:concept-aliases) of the data file that contains the fixture data * to be returned by [[getData()]]. If this is not set, it will default to `FixturePath/data/TableName.php`, * where `FixturePath` stands for the directory containing this fixture class, and `TableName` stands for the * name of the table associated with this fixture. You can set this property to be false to prevent loading any data. */ public $dataFile; /** * @var TableSchema the table schema for the table associated with this fixture */ private $_table; /** * {@inheritdoc} */ public function init() { parent::init(); if ($this->tableName === null) { if ($this->modelClass === null) { throw new InvalidConfigException('Either "modelClass" or "tableName" must be set.'); } /** @var ActiveRecord $modelClass */ $modelClass = $this->modelClass; $this->db = $modelClass::getDb(); } } /** * Loads the fixture. * * It populate the table with the data returned by [[getData()]]. * * If you override this method, you should consider calling the parent implementation * so that the data returned by [[getData()]] can be populated into the table. */ public function load() { $this->data = []; $table = $this->getTableSchema(); foreach ($this->getData() as $alias => $row) { $primaryKeys = $this->db->schema->insert($table->fullName, $row); $this->data[$alias] = array_merge($row, $primaryKeys); } } /** * Returns the fixture data. * * The default implementation will try to return the fixture data by including the external file specified by [[dataFile]]. * The file should return an array of data rows (column name => column value), each corresponding to a row in the table. * * If the data file does not exist, an empty array will be returned. * * @return array the data rows to be inserted into the database table. */ protected function getData() { if ($this->dataFile === null) { if ($this->dataDirectory !== null) { $dataFile = $this->getTableSchema()->fullName . '.php'; } else { $class = new \ReflectionClass($this); $dataFile = dirname($class->getFileName()) . '/data/' . $this->getTableSchema()->fullName . '.php'; } return $this->loadData($dataFile, false); } return parent::getData(); } /** * {@inheritdoc} */ public function unload() { $this->resetTable(); parent::unload(); } /** * Removes all existing data from the specified table and resets sequence number to 1 (if any). * This method is called before populating fixture data into the table associated with this fixture. */ protected function resetTable() { $table = $this->getTableSchema(); $this->db->createCommand()->delete($table->fullName)->execute(); if ($table->sequenceName !== null) { $this->db->createCommand()->executeResetSequence($table->fullName, 1); } } /** * @return TableSchema the schema information of the database table associated with this fixture. * @throws \yii\base\InvalidConfigException if the table does not exist */ public function getTableSchema() { if ($this->_table !== null) { return $this->_table; } $db = $this->db; $tableName = $this->tableName; if ($tableName === null) { /* @var $modelClass \yii\db\ActiveRecord */ $modelClass = $this->modelClass; $tableName = $modelClass::tableName(); } $this->_table = $db->getSchema()->getTableSchema($tableName); if ($this->_table === null) { throw new InvalidConfigException("Table does not exist: {$tableName}"); } return $this->_table; } }