CakePHPでMongoDBをつなげてテストデータの投入のシェルとかを書いています。
データの投入の前にMongoDBのコレクション(RDBならテーブルかな)の全データクリアをしたいのですが、今まではこのようにTRUNCATEをSQLで呼び出していました。
$this->Model->execute('TRUNCATE TABLE table);
これはMongoDBでは動きません。MongodbSource.phpにはtruncate()というメソッドがりますが、どう呼び出したら動くかわからず、以下のようにしました。
$this->Model->query(array('$eval' => 'db.collection.drop();'));
$evalってなあに? といった状況です。もっといい方法があるかも。
コメント
“CakePHP でのMongoDB でTRUNCATE TABLEの話し” への2件のフィードバック
こんにちは、cake mongoの作者です。ご利用いただきありがとうございます。
cake mongoのデータソースのインスタンスは、Cake2では下記の方法で取得できるので、そこから呼出せます(Postモデルの利用を例に)
$cakeMongo = $this->Post->getDataSource();
$cakeMongo->truncate(‘tableName’);
教えていただいたコードでもtruncateできました。ありがとうございました。