У меня есть таблица 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
функцию?