Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

CakePHP 3:Thực hành tốt nhất cho bảng SQL tạm thời

Không cần phải nói điều đó với không tìm kiếm bảng, thực ra đó là điều ngược lại với những gì bạn muốn làm, với điều kiện cuối cùng bạn muốn truy cập nó.

Về cơ bản, lớp bảng phải được cấu hình như bình thường và bạn nên tạo bảng cơ sở dữ liệu tạm thời trước khi ứng dụng truy cập vào nó. Bạn có thể viết SQL tạo bảng thô theo cách thủ công hoặc tạo nó từ \Cake\Database\Schema\TableSchema ví dụ, hỗ trợ các bảng tạm thời.

Bạn có thể tạo đối tượng giản đồ một cách rõ ràng:

$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);

hoặc để đối tượng bảng tạo nó bằng cách sử dụng mảng định nghĩa trường của bạn:

$TableObject->setSchema($TableObject->fields);
$schema = $TableObject->getSchema()->setTemporary(true);

Sau đó, bạn có thể tạo SQL tạo bảng từ đối tượng lược đồ và chạy nó trên cơ sở dữ liệu:

$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 sẽ là một mảng các lệnh SQL cần thiết để tạo bảng, một cái gì đó dọc theo các dòng của:

[
    'CREATE TEMPORARY TABLE `temp_items` (
        `id` INTEGER AUTO_INCREMENT,
        `con` VARCHAR(255) NOT NULL,
        PRIMARY KEY (`id`)
    )'
]

Lưu ý rằng nếu bạn không gán lược đồ cho đối tượng bảng, bạn có thể gặp phải sự cố bộ nhớ đệm, vì lược đồ đã lưu trong bộ nhớ cache sẽ không khớp nữa khi bạn thay đổi định nghĩa bảng và không xóa bộ nhớ cache.

Xem thêm




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Cải thiện hiệu suất truy vấn CẬP NHẬT cho các phép tính phức tạp

  2. Trích xuất các trường MySQL của hàng thành các biến và mảng PHP

  3. Tìm giao điểm giữa các hàng và dấu thời gian trong db mysql

  4. tự động cập nhật hàng sau một thời gian nhất định

  5. bao gồm mysql vào cmake