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
- Sách dạy nấu ăn> Truy cập cơ sở dữ liệu &ORM> Hệ thống lược đồ
- Sách dạy nấu ăn> Truy cập cơ sở dữ liệu &ORM> Khái niệm cơ bản về cơ sở dữ liệu