カテゴリー
その他

#CakePHP での #MongoDB でTRUNCATE TABLE

広告

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できました。ありがとうございました。

コメントは受け付けていません。