FuelPHPでMongoDBを使用する場合のサンプル
設定については下記URL参照。
http://fuelphp.jp/docs/1.5/classes/mongo/introduction.html
FuelPHPのMongoDBクラスを使用したデータ取得等のサンプル。
想定バージョン : FuelPHP 1.5
instance
<?php $mongo = \Mongo_Db::instance();
get / get_one / get_where
データ取得系
<?php // SELECT * FROM $collection_name WHERE type = 1; $mongo->where(array('type' => 1)); $result1 = $mongo->get($collection_name); // SELECT * FROM $collection_name WHERE type = 1 LIMIT 1; $mongo->where(array('type' => 1)); $result2 = $mongo->get_one($collection_name); // SELECT * FROM $collection_name WHERE type = 1 LIMIT $limit; $result3 = $mongo->get_where($collection_name, where(array('type' => 1)), $limit);
get_cursor
結果を全て変数に格納するわけではなく、都度取得する形の為、データサイズを抑えられる。
<?php $mongo->where(array('type' => 1)); $result = $mongo->get_cursor($collection_name)->skip(100)->limit(3); var_dump($result->getNext()); // このタイミングで問い合わせが発生 // または foreach ($result as $val) { var_dump($val); // このタイミングで問い合わせが発生 }
select
<?php // SELECT name FROM $collection_name; $mongo->select(array('name')); $result = $mongo->get($collection_name); // 上記とは逆に、nameを除外 $mongo->select(array(), array('name'));
WHERE条件
取得データの型とWHEREで指定する値の型が合っていないとひっかからない為注意
<?php // SELECT * FROM $collection_name WHERE type = 1; $mongo->where(array('type' => 1)); $result = $mongo->get($collection_name); // WHERE type = 1 OR type = 2 $mongo->or_where(array('type' => 1))->or_where(array('type' => 2)); // WHERE type IN (1, 2) $mongo->where_in('type', array(1, 2)); // typeに1,2,3が全て含まれるものが対象 $mongo->where_in_all('type', array(1, 2, 3)); // typeに1,2,3どの値も含まれないいないものが対象 $mongo->where_not_in('type', array(1, 2, 3)); // WHERE type > 5 $mongo->where_gt(array('type', 5)); // WHERE type >= 5 $mongo->where_gte(array('type', 5)); // WHERE type < 10; $mongo->where_lt(array('type', 10)); // WHERE type <= 10 $mongo->where_lte(array('type', 10)); // WHERE type BETWEEN 5 AND 10; $mongo->where_between('type', 5, 10); // WHERE type > 5 AND type < 10; $mongo->where_between_ne('type', 5, 10); // WHERE type <> 1; $mongo->where_ne('type', 1); // WHERE name LIKE '%fran%'; $mongo->like('name', 'fran', 'im', true, true);
※likeの3番目の引数についてはmethod_likeを参照
count
<?php // SELECT COUNT(*) FROM $collection_name; $num = $mongo->count($collection_name);
insert / update / update_all / delete
更新系
<?php /* * INSERT INTO $collection_name * (name, surname, email) * VALUES * ('John', 'Doe', 'dont.em@ilme.com'); */ $insert_id = $mongo->insert($collection_name, array( 'name' => 'John', 'surname' => 'Doe', 'email' => 'dont.em@ilme.com', )); /* * UPDATE * $collection_name * SET * surname = 'Doe2' * WHERE * name => 'John' * LIMIT 1; */ $bool = $mongo->where(array('name' => 'John'))->update($collection_name, array( 'surname' => 'Doe2', )); /* * UPDATE * $collection_name * SET * surname = 'Doe3' * WHERE * name => 'John'; */ $bool = $mongodb->where(array('name' => 'John'))->update_all($collection_name, array( 'surname' => 'Doe3', )); /* * DELETE FROM $collection_name WHERE name = 'John' LIMIT 1; */ $bool = $mongodb->where(array('name' => 'John'))->delete($collection_name); /* * DELETE FROM $collection_name WHERE name = 'John'; */ $bool = $mongodb->where(array('name' => 'John'))->delete_all($collection_name);