NCMB PHP SDKの使い方:データストア

NCMB SDKでデータストアを扱う方法を解説します。

データストアへの保存

use NcmbGeoPoint;
use NcmbObject;

$className = 'example';
$obj = new Object($className);
$obj->serialId = 1; // 整数
$obj->name = 'Example Object';  // 文字列
$obj->timestamp = new DateTime();  // 時間
$obj->position = new GeoPoint(35.695985, 139.689318); // 緯度経度
$obj->isValid = true // 真偽値
$obj->save();

データストアに保存するには、NcmbObject クラスのインスタンスを作成し、そのプロパティに保存する値をセットした後に save() メソッドを呼び出します。

値のセットはプロパティの代わりに set() メソッドを呼ぶことでも可能です。

$obj->set('someKey', 'some variable');

objectId を指定したデータストアの読み込み

use NcmbObject;

$className = 'example';
$objectId = '3Dw7EnByRYvtZ3rh';
$obj = new Object($className, $objectId);
$obj->fetch(); // 読み込み実行

echo $obj->name;

データストアから値を読み込むには、objectId がすでに分かっている場合にはそれを指定して NcmbObject クラスのインスタンスを作成し、fetch() メソッドを呼びだすのが簡単です。

Query を使ったデータストアの検索

objectId が分からないデータの読み込みや、特定条件にマッチしたデータを取得したい場合は、NcmbQuery クラスを使用します。

use NcmbQuery;

$className = 'example';
$query = new Query($className);
$query->equalTo('serialId', 1);
$obj = $query->first();
echo $obj->name;

Query オブジェクトの生成

検索したいデータストアのクラス名を渡して NcmbQuery クラスのインスタンスを作成します

$query = new Query($className);

検索条件の指定

NcmbQuery オブジェクトに対して検索条件を指定するメソッドを追加します。

$query->equalTo('serialId', 1);

検索条件を指定するメソッドには以下のものがあります。

  • equalTo : 値が等しい
  • notEqualTo: 値が等しくない
  • lessThan: 指定した値より小さい ($lt)
  • greaterThan: 指定した値より大きい ($gt)
  • lessThanOrEqual: 指定した値以下 ($lte)
  • greaterThanOrEqual: 指定した値以上 ($gte)
  • containedIn: 値が含まれる ($in)
  • notContainedIn: 値が含まれない ($nin)
  • exists: 値が存在する ($exists)
  • doesNotExists: 値が存在しない
  • regex: 正規表現にマッチ ($regex)
  • inArray: 配列に含まれる ($inArray)
  • notInArray: 配列に含まれない ($ninArray)
  • containsAll: すべての値が含まれる ($all)
  • matchesQuery: サブクエリに合致するデータをポインタとして持っている ($inQuery)
  • relatedTo: オブジェクトIDが指定された親のリレーションにひもづく子 ($relatedTo)

検索の実行と結果の取得

find メソッドを呼び出すと、検索結果が返ります。検索に何もマッチしない場合は空配列になります。

$results = $query->find();

先頭の一つだけ欲しい場合は first メソッドを使います。

$result = $query->first()
[紹介元] PHPタグが付けられた新着投稿 – Qiita NCMB PHP SDKの使い方:データストア

関連記事