### Example:
$connection->transactional(function ($connection) {
$connection->newQuery()->delete('users')->execute();
});
public transactional ( callable $callback ) | ||
$callback | callable |
/** * Executes list of quries in one transaction. * * @param \Cake\Database\Connection $db Connection to run the SQL queries on. * @param array $queries List of SQL statements. * @return void */ protected function _execute($db, $queries = null) { $logQueries = $db->logQueries(); if ($logQueries) { $db->logQueries(false); } $db->transactional(function ($db) use($queries) { $db->disableForeignKeys(); foreach ($queries as $query) { $this->_io->out('.', 0); $db->execute($query)->closeCursor(); } $db->enableForeignKeys(); }); if ($logQueries) { $db->logQueries(true); } }
/** * Imports tables schema and populates them. * * @param \Cake\Database\Connection $conn Database connection to use * @return bool True on success, false otherwise. On failure error messages * are automatically set */ public function importTables($conn) { $Folder = new Folder($this->config('schemaPath')); $fixtures = $Folder->read(false, false, true)[1]; try { return (bool) $conn->transactional(function ($connection) use($fixtures) { foreach ($fixtures as $fixture) { $result = $this->_processFixture($fixture, $connection); if (!$result) { $this->error(__d('installer', 'Error importing "{0}".', $fixture)); return false; } } return true; }); } catch (\Exception $ex) { $this->error(__d('installer', 'Unable to import database information. Details: {0}', '<p>' . $ex->getMessage() . '</p>')); return false; } }