メインコンテンツまでスキップ

複雑な条件で会員を検索する

POST /api/v1/get_member_infos_by_oneshot_condition を利用すると、複数の項目や複雑な条件を組み合わせて会員データを検索できます。 例えば、「特定の複数選択項目にチェックを入れている会員」を抽出することが可能です。

この API は一度の呼び出しで最大 50 件の会員データを返します。51 件目以降のデータを取得するには、offset パラメータの値を 50, 100 と増やして再度 API を呼び出す必要があります。

パラメータ

キーデータ型必須説明
member_table_idIntegerデータベースID。
condition_infoObject検索条件を指定するオブジェクト。詳細は後述します。
offsetInteger検索結果の取得開始位置。0 を指定すると1件目から取得します。
sort_keyInteger結果の並び替えの基準となる項目ID。会員IDでソートする場合は 0 を指定します。
orderBooleantrue で昇順、false で降順にソートします。

condition_info の構造

condition_infogroupingconditions の 2 つのキーを持つオブジェクトです。

キーデータ型説明
groupingBooleanconditionsで指定した各項目間の条件をどのように結合するかを指定します。trueでAND(かつ)、falseでOR(または)となります。
conditionsObject各項目に対する個別の検索条件を格納するオブジェクト。

conditions オブジェクトには、キーとして項目名(e_XX)、値として [条件のとりかた, 付加情報] という形式の配列を指定します。

複数選択項目の「条件のとりかた」

複数選択項目を検索条件として利用する場合、以下の「条件のとりかた」を指定できます。

条件説明
2完全に一致指定した選択肢と完全に一致する場合。
5含む指定した選択肢をすべて含む場合。
13どれかを含む指定した選択肢のいずれかを含む場合。
15選択した個数選択している選択肢の個数が指定範囲内の場合。
...他にも多数の条件があります。詳細はAPI仕様書をご参照ください。

付加情報の例

  • 選択肢IDで検索 (options): "e_XX" => [13, ["options" => [1, 3]]]
    • 意味: 項目 XX で、選択肢 ID 1 または 3 のいずれかを選択している。
    • 条件のとりかた: 13 (どれかを含む)
  • 選択数で検索 (min_value, max_value): "e_XX" => [15, ["min_value" => 3, "max_value" => 5]]
    • 意味: 項目 XX で、選択している項目が 3 個以上 5 個以下である。
    • 条件のとりかた: 15 (選択した個数)

サンプルコード

データベース ID 1 の中で、項目 ID 10(複数選択項目)の選択肢 ID 12 の両方にチェックを入れている会員を検索し、会員 ID の昇順で結果を表示します。

<?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
    ...
  • 該当する会員が存在しない場合

    該当会員は存在しませんでした