2012-02-25 124 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;');