web-dev-qa-db-ja.com

特定のウェブフォームからすべての提出物を取得する

特定のWebフォームによるWebフォーム送信をロードしようとしていますsign_up

Query webform submissions を使用すると、関連付けられているすべてのIDが取得され、次を使用してデータをロードできます

$query = \Drupal::entityQuery('webform_submission')
  ->condition('webform_id', 'sign_up');
$result = $query->execute(); // Gives me IDs associated with the "sign_up" webform.

$storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
$submissions = $storage->loadMultiple($result);
$submission_data = array();
foreach ($submissions as $submission) {
  $submission_data[] = $submission->getData();
}
// $submission_data now contains all the submissions from "sign_up" webform.

これは提出物を取得する正しい方法ですか? Webformには、送信結果を照会するためのなんらかのAPIが付属していると思います。

私も試しました: https://www.drupal.org/project/webform/issues/2902682 が空の配列になってしまいました。

3
Ronnie

Webformモジュールは、カスタム Entity-Attribute-Valueモデル を使用して送信データを保存します。サンプルコードは、すべての送信データを取得する最も簡単で最速の方法です。唯一の制限は、投稿数とPHPのメモリ制限です。 1000の提出物をロードすると、メモリが不足します。

4
jrockowitz