Není třeba říkat, aby ne hledejte tabulku, ve skutečnosti je to opak toho, co chcete dělat, protože k ní nakonec chcete mít přístup.
Třída tabulky by měla být v zásadě nakonfigurována jako obvykle a dočasnou databázovou tabulku byste měli vytvořit dříve, než k ní aplikace přistoupí. SQL vytvoření nezpracované tabulky můžete buď napsat ručně, nebo jej vygenerovat z \Cake\Database\Schema\TableSchema
instance, která podporuje dočasné tabulky.
Můžete buď explicitně vytvořit objekt schématu:
$schema = new \Cake\Database\Schema\TableSchema('temp_items');
$schema
->addColumn('id', ['type' => 'integer'])
->addColumn('con', ['type' => 'string', 'length' => 255, 'null' => false])
->addConstraint('primary', ['type' => 'primary', 'columns' => ['id']])
->setTemporary(true);
$TableObject->setSchema($schema);
nebo ji nechte vygenerovat objektem tabulky pomocí pole definice polí:
$TableObject->setSchema($TableObject->fields);
$schema = $TableObject->getSchema()->setTemporary(true);
Poté můžete vygenerovat SQL vytvoření tabulky z objektu schématu a spustit jej proti databázi:
$connection = $TableObject->getConnection();
$queries = $schema->createSql($connection);
$connection->transactional(
function (\Cake\Database\Connection $connection) use ($queries) {
foreach ($queries as $query) {
$stmt = $connection->execute($query);
$stmt->closeCursor();
}
}
);
$queries
by bylo pole SQL příkazů potřebných k vytvoření tabulky, něco ve smyslu:
[
'CREATE TEMPORARY TABLE `temp_items` (
`id` INTEGER AUTO_INCREMENT,
`con` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)'
]
Všimněte si, že pokud nepřiřadíte schéma k objektu tabulky, můžete narazit na problémy s ukládáním do mezipaměti, protože schéma uložené v mezipaměti už nebude odpovídat, když změníte definici tabulky a nevymažete mezipaměť.
Viz také
- Kuchařská kniha> Přístup k databázi a ORM> Systém schémat
- Kuchařka> Přístup k databázi a ORM> Základy databáze