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

Главные вкладки

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

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

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

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

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

Лучший ответ

Аватар пользователя Litos Litos 5 августа 2016 в 22:52

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

Комментарии

Аватар пользователя gun_dose gun_dose 5 августа 2016 в 21:37

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

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

Аватар пользователя Litos Litos 5 августа 2016 в 22:01

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

Аватар пользователя gun_dose gun_dose 5 августа 2016 в 22:16
1

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

Аватар пользователя Litos Litos 5 августа 2016 в 23:39

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