RedBean:如何删除所有表中的所有行

时间:2012-02-25 08:54:57

标签: orm truncate redbean

我正在使用RedBean ORM。为了创建模式,我使用标准的redbean方法插入数据,以便Redbean自动调整模式以满足我的需要。我把它放在一个脚本中,当我需要初始化我的数据库时,它基本上用于构建模式。

问题是RedBean在每个表中保留一行或两行(我最初插入的那些表来获取redbean来构建模式)。

如果它是一个普通的数据库,要擦除所有行,我只会删除模式并重建它,但在这种情况下,这是不可能的,因为初始行仍然存在。

不幸的是,没有太多的Redbean Q / A.有人知道如何使用Redbean界面执行此操作吗?

我试过了

    $listOfTables = R::$writer->getTables();
foreach($listOfTables as $table)
{
    R::wipe($table);
}

当然这不起作用。 (它没有以正确的顺序TRUNCATE表,所以我得到一个关于另一个表的错误,使用这个键作为外部链接。它只是按ABC顺序迭代)

Fatal error: Uncaught [42000] - SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table referenced in a foreign key constraint (`redbeandb`.`research`, CONSTRAINT `research_ibfk_1` FOREIGN KEY (`ownEducationHistory_id`) REFERENCES `redbeandb`.`educationhistory` (`id`)) thrown in C:\Users\Rod\nginx-1.0.12\html\rb.php on line 105

如果某人有(redbean api)解决方案,我们将不胜感激。希望这个问题对于在Stackoverflow上构建更多的RedBean Q / A是有益的。

2 个答案:

答案 0 :(得分:2)

我知道这是一个老帖子,但我想我今天帮助找到这个人。如果你不关心数据完整性,你可以告诉mysql忽略外键检查(计划擦除所有相关表)。

R::exec('SET FOREIGN_KEY_CHECKS = 0;');
$listOfTables = R::$writer->getTables();
foreach($listOfTables as $table)
{
    R::wipe($table);
}
R::exec('SET FOREIGN_KEY_CHECKS = 1;');

答案 1 :(得分:0)

使用

ř::核弹();

是的,它将删除所有表,但由于RedBeanPHP动态创建所有表,因此这不是问题。