/** * Test truncate with a mock. * * @return void */ public function testTruncateStatements() { $this->loadFixtures('Article', 'User'); $db = ConnectionManager::getDatasource('test'); $schema = $db->config['database']; $Article = new Article(); $this->Dbo = $this->getMock('Mysql', array('execute'), array($db->config)); $this->Dbo->expects($this->at(0))->method('execute') ->with("TRUNCATE TABLE `$schema`.`articles`"); $this->Dbo->truncate($Article); $this->Dbo->expects($this->at(0))->method('execute') ->with("TRUNCATE TABLE `$schema`.`articles`"); $this->Dbo->truncate('articles'); // #2355: prevent duplicate prefix $this->Dbo->config['prefix'] = 'tbl_'; $Article->tablePrefix = 'tbl_'; $this->Dbo->expects($this->at(0))->method('execute') ->with("TRUNCATE TABLE `$schema`.`tbl_articles`"); $this->Dbo->truncate($Article); $this->Dbo->expects($this->at(0))->method('execute') ->with("TRUNCATE TABLE `$schema`.`tbl_articles`"); $this->Dbo->truncate('articles'); }
/** * Test truncate with a mock. * * @return void */ public function testTruncateStatements() { $this->loadFixtures('Article', 'User'); $db = ConnectionManager::getDatasource('test'); $schema = $db->config['schema']; $Article = new Article(); $this->Dbo = $this->getMock('Postgres', array('execute'), array($db->config)); $this->Dbo->expects($this->at(0))->method('execute')->with("DELETE FROM \"{$schema}\".\"articles\""); $this->Dbo->truncate($Article); $this->Dbo->expects($this->at(0))->method('execute')->with("DELETE FROM \"{$schema}\".\"articles\""); $this->Dbo->truncate('articles'); // #2355: prevent duplicate prefix $this->Dbo->config['prefix'] = 'tbl_'; $Article->tablePrefix = 'tbl_'; $this->Dbo->expects($this->at(0))->method('execute')->with("DELETE FROM \"{$schema}\".\"tbl_articles\""); $this->Dbo->truncate($Article); $this->Dbo->expects($this->at(0))->method('execute')->with("DELETE FROM \"{$schema}\".\"tbl_articles\""); $this->Dbo->truncate('articles'); }
/** * Deletes all the records in a table and drops all associated auto-increment sequences * * @param mixed $table A string or model class representing the table to be truncated * @param integer $reset If -1, sequences are dropped, if 0 (default), sequences are reset, * and if 1, sequences are not modified * @return boolean SQL TRUNCATE TABLE statement, false if not applicable. * @access public */ function truncate($table, $reset = 0) { if (parent::truncate($table)) { $table = $this->fullTableName($table, false); if (isset($this->_sequenceMap[$table]) && $reset !== 1) { foreach ($this->_sequenceMap[$table] as $field => $sequence) { if ($reset === 0) { $this->execute("ALTER SEQUENCE \"{$sequence}\" RESTART WITH 1"); } elseif ($reset === -1) { $this->execute("DROP SEQUENCE IF EXISTS \"{$sequence}\""); } } } return true; } return false; }
/** * Truncates the current fixture. Can be overwritten by classes extending * CakeFixture to trigger other events before / after truncate. * * @param DboSource $db A reference to a db instance * @return bool */ public function truncate($db) { $fullDebug = $db->fullDebug; $db->fullDebug = false; $return = $db->truncate($this->table); $db->fullDebug = $fullDebug; return $return; }
/** * Deletes all the records in a table and drops all associated auto-increment sequences * * @param mixed $table A string or model class representing the table to be truncated * @param boolean $reset true for resseting the sequence, false to leave it as is. * and if 1, sequences are not modified * @return boolean SQL TRUNCATE TABLE statement, false if not applicable. */ public function truncate($table, $reset = true) { $table = $this->fullTableName($table, false); if (!isset($this->_sequenceMap[$table])) { $cache = $this->cacheSources; $this->cacheSources = false; $this->describe($table); $this->cacheSources = $cache; } if (parent::truncate($table)) { if (isset($this->_sequenceMap[$table]) && $reset) { foreach ($this->_sequenceMap[$table] as $field => $sequence) { $this->_execute("ALTER SEQUENCE \"{$sequence}\" RESTART WITH 1"); } } return true; } return false; }