Компоновщик сложных запросов jquery с внутренним объединением - PullRequest
0 голосов
/ 28 октября 2019

У меня есть таблица VEHICLES примерно так:

-------------------------------------------------------
| ID  |   Brand   |   License_plate      |  Model      |
-------------------------------------------------------
| 1   |   IVECO   |   XA123WE            |  GRANDX    |
-------------------------------------------------------
| 2   |   IVECO   |   CF556XD            |  TOURS     |
-------------------------------------------------------
| 3   |   FIAT    |   AS332ZZ            |  Punto     |
-------------------------------------------------------

Для каждого транспортного средства у меня есть один или несколько INSURANCE (тот, который имеет большую дату, - тот, который мне нужно проверить, действует ли страховкаактивен или не основан на сегодняшней дате)

-------------------------------------
| ID  |   vehicle_ID   |   Expire   |
-------------------------------------
| 1   |   1            | 2018-10-19 |
-------------------------------------
| 2   |   1            | 2019-10-20 |
-------------------------------------
| 3   |   2            | 2019-11-25 |
-------------------------------------
| 4   |   2            | 2018-10-20 |
-------------------------------------

В моем примере выше, если предположить, что сегодня 2019-10-28, срок действия страховки для автомобиля с ID 1 истек, страхование для автомобиля с ID 2 все еще активно (2019-11-25), для транспортных средств с идентификатором 3 страховка еще не установлена.

Теперь я хочу перенести окно поиска по умолчанию в построитель запросов jquery.

Нет проблем при поиске по запросу внутри vehicles table.

$('#queryBuilder').queryBuilder({
      plugins: ['bt-tooltip-errors'],
      filters: [{
        id: 'vehicles.Brand',
        label: 'Targa',
        type: 'string',
        operators: [ 'equal', 'not_equal', 'begins_with', 'not_begins_with', 'contains', 'not_contains', 'ends_with', 'not_ends_with', 'is_empty', 'is_not_empty' ]
      },
      {
        id: 'vehicles.License_plate',
        label: 'Marca',
        type: 'string',
        operators: [ 'equal', 'not_equal', 'begins_with', 'not_begins_with', 'contains', 'not_contains', 'ends_with', 'not_ends_with', 'is_empty', 'is_not_empty' ]
      },
      {
        id: 'vehicles.Model',
        label: 'Modello',
        type: 'string',
        operators: [ 'equal', 'not_equal', 'begins_with', 'not_begins_with', 'contains', 'not_contains', 'ends_with', 'not_ends_with', 'is_empty', 'is_not_empty' ]
      }]
    });

Моя форма отправляет запрос и параметры на мою страницу PHP, а функция возвращает все идентификаторы моих транспортных средств:

function get_ids_vehicles_by_query($query = "", $array_params = array()) {
    global $db;

    if ( $query != "" && count($array_params) ) {

        try {
            $rs = $db->prepare("SELECT DISTINCT vehicles.ID FROM vehiclesWHERE " . $query);
            $rs->execute($array_params);
            $ris = $rs->fetchAll(PDO::FETCH_ASSOC);
            return $ris;

        } catch(PDOException $e) {
            die($e);
        }

    }

    return array();

}

Но теперь мне нужно добавить в свой jqueryПостроитель запросов - выбор, который ищет самый высокий страховой подарок для каждого транспортного средства на основе моего выбора:

 {
    id: 'insurances.custom_field_i_dont_know',
    label: 'Insurance',
    type: 'integer',
    input: 'select',
    values: {
      0: 'Insurance not present',
      1: 'Insurance still active',
      2: 'Insurance expired'
    },
    operators: ['equal', 'not_equal']
  }

Я не уверен, как изменить мой get_ids_vehicles_by_query, чтобы добавить ВНУТРЕННЕЕ СОЕДИНЕНИЕ (я думаю), чтобы фильтровать толькоСамая высокая дата страхования сгруппирована для каждого идентификатора транспортного средства ифильтр на основе моего custom_field_i_dont_know значения:

0: мне нужно отфильтровать только автомобили без зарегистрированной страховки (мой пример: автомобили с идентификатором 3)

1: мне нужно отфильтровать только автомобили сстраховка все еще активна (мой пример: автомобили с идентификатором 2)

2: мне нужно отфильтровать только автомобили с истекшим сроком страхования (мой пример: автомобили с идентификатором 1)

Кроме того, фильтр для бренда,License_plate и модель первого сборщика запросов jquery все еще должны оставаться.

Вот как работает JQUERY QUERY BUILDER: http://jsfiddle.net/fr0z3nfyr/vwyLq21m/2/

Кто-нибудь подскажет, как редактировать мою get_ids_vehicles_by_query функцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...