【发布时间】:2011-05-19 21:04:15
【问题描述】:
我正在使用 RedBean PHP 进行测试,我非常喜欢它,但是我不知道如何截断表格。我可以获取所有的 bean 并删除它们,但这似乎很麻烦。
【问题讨论】:
我正在使用 RedBean PHP 进行测试,我非常喜欢它,但是我不知道如何截断表格。我可以获取所有的 bean 并删除它们,但这似乎很麻烦。
【问题讨论】:
在 RedBean 1.3 中,您可以使用 R::wipe($type) 截断表。
【讨论】:
RedBean 只是一个 ORM 工具 (AFAIK),所以如果您的后端数据库是基于 SQL 的,您可以简单地执行如下 SQL 语句:TRUNCATE TABLE yourTable;
直接通过 RedBean 执行查询
适配器是与 RedBean 的数据库通信的类。这个适配器 可以执行查询来操作数据库。获取此实例 适配器使用:
$adapter = $toolbox->getDatabaseAdapter();
来自http://www.redbeanphp.com/downloads/redbean.pdf - 1.3 http://www.redbeanphp.com/manual/manual.pdf - 2.0
【讨论】:
$adapter->exec('TRUNCATE TABLE yourtable');
像这样擦除单个表:
R::wipe($table);
像这样擦除 MySQL 模式中的所有表:
function CleanAllTables() {
$tables = R::getCol(' show tables ');
foreach ($tables as $table) {
R::wipe($table);
}
}
MySQL:
TRUNCATE TABLE <table_name>
使用 RedBean 适配器
执行$adapter->exec('TRUNCATE TABLE <table_name>');
这应该可以完成工作! :)
【讨论】:
老问题,但值得一提的是,RedBean 4.0+(可能还有旧版本)在使用各种 N-M 关系映射时会使用外键。
因此,在这种情况下,就我而言,为了解决这个问题,有必要将外键检查设置为 0。
R::exec('SET FOREIGN_KEY_CHECKS = 0;');
R::wipe('tablename');
【讨论】: