0

jQuery QueryBuilder プラグインを使用して SQL ステートメントを取得したいと考えています。デフォルトの条件「AND」と「OR」を使用すると、すべてが思いどおりに機能します。ただし、「XOR」条件を使用しようとすると、エラーが発生します (以下を参照)。

これは QueryBuilder の私のコードです:

$(document).ready(function () {
  var options = {
    allow_empty: true,

    filters: [
      {
        id: "name",
        label: "Name",
        type: "string",
        default_value: "Noah",
        size: 30,
        unique: true,
      },
    ],

    /* XOR does not work with SQL */
    conditions: ["AND", "OR", "XOR"],
  };

  $("#builder").queryBuilder(options);

  $(".parse-json").on("click", function () {
    var res = $("#builder").queryBuilder("getSQL", $(this).data("stmt"), false);
    console.log(
      res.sql +
        (res.params ? "\n\n" + JSON.stringify(res.params, undefined, 2) : "")
    );
  });
});

これは、私の Web サイトの QueryBuilder のサンプル イメージです。ここをクリックしてください

前に述べたように、「OR」条件を選択すると、目的の SQL ステートメントが得られます。

name = ? OR name = ?

[
  "Noah",
  "James"
]

しかし、「XOR」条件を選択すると、次のようなエラー メッセージが表示されます。

Uncaught Error: Unable to build SQL query with condition "XOR"
  at Function.error (jquery-2.x-git.min.js:2)

エラーが発生したファイルは次のとおりです: jquery-2.x-git.min.js:2

インターネットを 2 時間以上検索しましたが、その方向を指し示すものは何も見つかりませんでした。どんな助けでも大歓迎です。

**注目すべきことの 1 つは、ルールを SQL ステートメントではなくオブジェクトとして抽出する場合、「XOR」条件が機能することです。ここでは、ステートメントをオブジェクトとして取得するために使用されるコードを確認できます。

$(".parse-json").on("click", function () {
  console.log(
    JSON.stringify($("#builder").queryBuilder("getRules"), undefined, 2)
  );
});
4

1 に答える 1