NCMB PHP SDKでデータストアを扱う方法を解説します。
データストアへの保存
use Ncmb\GeoPoint;
use Ncmb\Object;
$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();
データストアに保存するには、\Ncmb\Object クラスのインスタンスを作成し、そのプロパティに保存する値をセットした後に save() メソッドを呼び出します。
値のセットはプロパティの代わりに set() メソッドを呼ぶことでも可能です。
$obj->set('someKey', 'some variable');
objectId を指定したデータストアの読み込み
use Ncmb\Object;
$className = 'example';
$objectId = '3Dw7EnByRYvtZ3rh';
$obj = new Object($className, $objectId);
$obj->fetch(); // 読み込み実行
echo $obj->name;
データストアから値を読み込むには、objectId がすでに分かっている場合にはそれを指定して \Ncmb\Object クラスのインスタンスを作成し、fetch() メソッドを呼びだすのが簡単です。
Query を使ったデータストアの検索
objectId が分からないデータの読み込みや、特定条件にマッチしたデータを取得したい場合は、\Ncmb\Query クラスを使用します。
use Ncmb\Query;
$className = 'example';
$query = new Query($className);
$query->equalTo('serialId', 1);
$obj = $query->first();
echo $obj->name;
Query オブジェクトの生成
検索したいデータストアのクラス名を渡して \Ncmb\Query クラスのインスタンスを作成します
$query = new Query($className);
検索条件の指定
\Ncmb\Query オブジェクトに対して検索条件を指定するメソッドを追加します。
$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()