複雑な条件で会員を検索する
POST /api/v1/get_member_infos_by_oneshot_condition を利用すると、複数の項目や複雑な条件を組み合わせて会員データを検索できます。
例えば、「特定の複数選択項目にチェックを入れている会員」を抽出することが可能です。
この API は一度の呼び出しで最大 50 件の会員データを返します。51 件目以降のデータを取得するには、offset パラメータの値を 50, 100 と増やして再度 API を呼び出す必要があります。
パラメータ
| キー | データ型 | 必須 | 説明 |
|---|---|---|---|
member_table_id | Integer | ○ | データベースID。 |
condition_info | Object | ○ | 検索条件を指定するオブジェクト。詳細は後述します。 |
offset | Integer | ○ | 検索結果の取得開始位置。0 を指定すると1件目から取得します。 |
sort_key | Integer | ○ | 結果の並び替えの基準となる項目ID。会員IDでソートする場合は 0 を指定します。 |
order | Boolean | ○ | true で昇順、false で降順にソートします。 |
condition_info の構造
condition_info は grouping と conditions の 2 つのキーを持つオブジェクトです。
| キー | データ型 | 説明 |
|---|---|---|
grouping | Boolean | conditionsで指定した各項目間の条件をどのように結合するかを指定します。trueでAND(かつ)、falseでOR(または)となります。 |
conditions | Object | 各項目に対する個別の検索条件を格納するオブジェクト。 |
conditions オブジェクトには、キーとして項目名(e_XX)、値として [条件のとりかた, 付加情報] という形式の配列を指定します。
複数選択項目の「条件のとりかた」
複数選択項目を検索条件として利用する場合、以下の「条件のとりかた」を指定できます。
| 値 | 条件 | 説明 |
|---|---|---|
| 2 | 完全に一致 | 指定した選択肢と完全に一致する場合。 |
| 5 | 含む | 指定した選択肢をすべて含む場合。 |
| 13 | どれかを含む | 指定した選択肢のいずれかを含む場合。 |
| 15 | 選択した個数 | 選択している選択肢の個数が指定範囲内の場合。 |
| 他 | ... | 他にも多数の条件があります。詳細はAPI仕様書をご参照ください。 |
付加情報の例
- 選択肢IDで検索 (
options):"e_XX" => [13, ["options" => [1, 3]]]- 意味: 項目 XX で、選択肢 ID
1または3のいずれかを選択している。 - 条件のとりかた:
13(どれかを含む)
- 意味: 項目 XX で、選択肢 ID
- 選択数で検索 (
min_value,max_value):"e_XX" => [15, ["min_value" => 3, "max_value" => 5]]- 意味: 項目 XX で、選択している項目が 3 個以上 5 個以下である。
- 条件のとりかた:
15(選択した個数)
サンプルコード
データベース ID 1 の中で、項目 ID 10(複数選択項目)の選択肢 ID 1 と 2 の両方にチェックを入れている会員を検索し、会員 ID の昇順で結果を表示します。
- PHP
<?php
$apiToken = getenv("API_TOKEN");
$environmentId = getenv("ENV_ID");
$url = "https://krs.bz/$environmentId/api/v1/get_member_infos_by_oneshot_condition";
$conditionInfo = [
'grouping' => true,
'conditions' => [
// 項目ID 10 で、選択肢ID 1と2を両方とも選択している
'e_10' => [5, ['options' => [1, 2]]],
],
];
$data = [
'member_table_id' => 1,
'condition_info' => $conditionInfo,
'offset' => 0,
'sort_key' => 0, // 会員IDでソート
'order' => true, // 昇順
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$result = json_decode($response, true);
if (!empty($result)) {
foreach ($result as $member) {
// e_6 はメールアドレス項目
printf(
"会員ID : %s\t%s%s",
$member['id'],
$member['e_6'],
PHP_EOL
);
}
} else {
echo '該当会員は存在しませんでした', PHP_EOL;
}
} else {
echo 'Error: ', $response, PHP_EOL;
}
実行結果
-
該当する会員が存在した場合
会員ID : 1 foo@example.com
会員ID : 15 bar@example.com
... -
該当する会員が存在しない場合
該当会員は存在しませんでした