Модуль для поиска данных

5 августа 2016 в 19:42
Аватар пользователя Litos Litos 0 7 Решено

Здравствуйте!
Задался целью написать для опыта модуль, с формой поиска по следующим полям:

  1. Дата - формат Date
  2. Время - формат обычный текст
  3. Пассажир - целое число

Выбираю из двух вариантов:
1. Создать тип материала с нужными полями. Написать модуль с механизмом поиска по этим полям.
2. Написать модуль, который создаст таблицу в базе данных с нужными полями и сделать механизм поиска.
Я предпочитаю сделать 1-й вариант, так как можно далее с помощью Views сделать отчеты любого вида. Но пока не соображу как это написать в коде.
Для 2-й варианта проще сделать механизм поиска, но отчеты придется писать с нуля.

Прошу дать совет, какой способ на ваш взгляд проще.
Спасибо!

Комментарии

Первый вариант хорош тем, что при использовании вьюс всё, что вам нужно, можно накликать мышкой, не написав ни строчки кода.
Второй вариант хорош тем, что будет работать немного быстрее. С помощь search_api_db его также можно накликать мышкой, не написав ни строчки кода.

А что за модуль и зачем вы собрались писать, я так и не понял))

5 августа 2016 в 21:37

Спасибо за ответ.
Это модуль для пассажирской компании по бронированию билетов на автобус.
То есть на определенную дату и время есть ограниченное кол-во билетов и перед тем как забронировать билет, надо по базе сделать поиск на наличие мест.

5 августа 2016 в 22:01

А вот тут уже становится интересно. Если у компании полтора автобуса, которые ездят в соседнюю деревню по выходным, то нет разницы, как делать. Если же речь о десятках маршрутов с десятками остановок и десятками билетов на каждый рейс, то вероятно понадобится Apache Solr.

5 августа 2016 в 22:16

Apache Solr пока не буду трогать, хотя мысль мне нравится.
Рейсов будет немного.
Я буду делать так. По умолчанию число билетов равно 100. В форму поиска вводится Дата, выбирается Время из выпадающего списка и выбирается кол-во Пассажиров из выпадающего списка. Далее жмем кнопку Найти.
1. Механизм поиска первым шагом проверяет поле Дата. Если на это число есть в базе купленные билеты, то сохраняет все во временный массив.
2. Далее проверяется поле Время. Если выбранное время есть у какого-нибудь билета из ранее сохраненного массива, то подсчитывается кол-во таких билетов.
3. От суммы 100 отнимается это число и это значение сравнивается с кол-вом выбранных Пассажиров в форме. Если свободных билетов больше, чем ко-во выбранных Пассажиров, то данные сохраняются в базе данных.

5 августа 2016 в 23:39