2012-02-25 15 views
3

私はRedBean ORMを使用しています。スキーマを作成するために、Redbeanが自分のニーズに合わせてスキーマを自動的にフィットするようにデータを挿入する標準的なRedbeanアプローチを使用しました。私は基本的に私のデータベースを初期化する必要があるときにスキーマを構築するために使用されるスクリプトにこれを入れます。RedBean:すべてのテーブルからすべての行を削除するには

問題はRedBean各テーブルの行または2(私は最初にスキーマを構築する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を構築するのに有益です。

+0

いつも 'R :: nuke()'はありますが、あなたのテーブルもすべて破壊されると思います。私はあなたが外来の鍵を取り除かなければあなたが拭くことができるかどうかわかりません。あなたがそれを簡単にすることができるかどうかわかりません。 –

答えて

0

使用

R :: nuke();

はい、それはすべてのテーブルをドロップしますが、RedBeanPHPがその場ですべてのテーブルを作成するので、これは問題ではありません。

+2

ライブサイトではなく、開発環境ですぐにテーブルを作成したいだけです。 – Chris

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;'); 
関連する問題