Tidak perlu memberitahunya untuk tidak cari tabel, sebenarnya itu kebalikan dari apa yang ingin Anda lakukan, mengingat pada akhirnya Anda ingin mengaksesnya.
Kelas tabel pada dasarnya harus dikonfigurasi seperti biasa, dan Anda harus membuat tabel database sementara sebelum aplikasi menyebabkannya diakses. Anda dapat menulis SQL pembuatan tabel mentah secara manual, atau membuatnya dari \Cake\Database\Schema\TableSchema
instance, yang mendukung tabel sementara.
Anda dapat membuat objek skema secara eksplisit:
$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);
atau biarkan objek tabel membuatnya, menggunakan larik definisi bidang Anda:
$TableObject->setSchema($TableObject->fields);
$schema = $TableObject->getSchema()->setTemporary(true);
Anda kemudian dapat membuat SQL pembuatan tabel dari objek skema dan menjalankannya terhadap database:
$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
akan menjadi larik perintah SQL yang diperlukan untuk membuat tabel, sesuatu di sepanjang baris:
[
'CREATE TEMPORARY TABLE `temp_items` (
`id` INTEGER AUTO_INCREMENT,
`con` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)'
]
Perhatikan bahwa jika Anda tidak menetapkan skema ke objek tabel, Anda dapat mengalami masalah cache, karena skema cache tidak akan cocok lagi saat Anda mengubah definisi tabel dan tidak mengosongkan cache.
Lihat juga