truncate() public method

Deletes all the records in a table and resets the count of the auto-incrementing primary key, where applicable.
public truncate ( Model | string $table ) : boolean
$table Model | string A string or model class representing the table to be truncated
return boolean SQL TRUNCATE TABLE statement, false if not applicable.
Example #1
0
/**
 * 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;
 }
Example #5
0
 /**
  * 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;
 }