2012-02-25 84 views
3

我正在使用RedBean ORM。为了创建模式,我使用标准的插入数据的redbean方法,以便Redbean自动适应模式以满足我的需求。我把它放在一个脚本中,当我需要初始化我的数据库时,它将基本上用于构建模式。RedBean:如何删除所有表中的所有行

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

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

不幸的是,这里没有太多的Redbean Q/A。任何人都知道我会如何使用Redbean界面来做到这一点?

我已经试过

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

当然,这并不工作,虽然。 (它不会截断表中的正确的顺序,所以我得到有关使用该密钥作为外地链路另一表的错误,它只是在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 

如果某人有一个(红豆API)解决方案,它将不胜感激。希望这个问题可以有益于在Stackoverflow上构建更多的RedBean Q/A。

+0

总是存在'R :: nuke()',但我认为这也会破坏你的所有表。我不知道你是否可以擦除,除非你删除外键,我不知道你是否可以简单地做到这一点。 – 2012-02-25 15:30:15

回答

0

使用

R :: nuke();

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

+2

您只想在开发环境中实时创建表格,而不是在实况网站上创建表格。 – Chris 2012-10-11 13:20:03

1

我知道这是一个旧帖子,但我想我会帮助找到今天的人。如果您不关心数据完整性(计划清除所有相关表),则可以让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;');