Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

CakePHP 3:Praktik Terbaik untuk Tabel SQL Sementara

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Transaksi MySQL dengan aplikasi akuntansi

  2. Prosedur Tersimpan MySQL

  3. PHP dan MySQL:Pesan berdasarkan tanggal dan batas terbaru 10

  4. memanggil prosedur tersimpan mysql dari c #?

  5. Transformasi baris ke kolom dari tabel yang berbeda (union) di MySQL versi 8.0.17 menggunakan Pivot