Няма нужда да му казвате не потърсете таблицата, всъщност това е обратното на това, което искате да направите, като се има предвид, че в крайна сметка искате да получите достъп до нея.
Класът на таблицата по принцип трябва да бъде конфигуриран както обикновено и трябва да създадете временната таблица на базата данни, преди приложението да причини достъп до нея. Можете или да напишете SQL за създаване на необработена таблица ръчно, или да го генерирате от \Cake\Database\Schema\TableSchema
екземпляр, който поддържа временни таблици.
Можете да създадете изрично обекта на схемата:
$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);
или оставете обекта на таблицата да го генерира, като използвате вашия масив от дефиниции на полета:
$TableObject->setSchema($TableObject->fields);
$schema = $TableObject->getSchema()->setTemporary(true);
След това можете да генерирате SQL за създаване на таблица от обекта на схемата и да го стартирате в базата данни:
$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
ще бъде масив от SQL команди, необходими за създаване на таблицата, нещо от вида на:
[
'CREATE TEMPORARY TABLE `temp_items` (
`id` INTEGER AUTO_INCREMENT,
`con` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)'
]
Имайте предвид, че ако не присвоите схемата на обекта на таблицата, може да срещнете проблеми с кеширането, тъй като кешираната схема няма да съвпада повече, когато промените дефиницията на таблицата и не изчистите кеша.
Вижте също
- Cookbook> Database Access &ORM> Schema System
- Готварска книга> Достъп до база данни и ORM> Основи на базата данни