しないように指示する必要はありません テーブルを探してください。最終的にはテーブルにアクセスしたいので、実際にはそれはあなたがやりたいことの反対です。
テーブルクラスは基本的に通常どおりに構成する必要があり、アプリケーションがアクセスする前に一時データベーステーブルを作成する必要があります。生のテーブル作成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`)
)'
]
スキーマをテーブルオブジェクトに割り当てないと、テーブル定義を変更してキャッシュをクリアしないときにキャッシュされたスキーマが一致しなくなるため、キャッシュの問題が発生する可能性があることに注意してください。
も参照してください