#php #laravel #uri
#php #ларавель #uri
Вопрос:
Я планирую реализовать api для базы данных с использованием Laravel, и я надеюсь иметь функцию поиска, использующую URI, например
www.exaample.com/WaferSearch ?{строка поиска}
Кажется, очень легко реализовать строку поиска, например
параметр 1 = 4
При этом будет запрошен список пластин (это то, о чем идет речь в базе данных), где param1 равно 4
Документация, кажется, очень четко описывает, как я могу превратить любой вопрос, подобный этому, в SQL.
Тем не менее, я хочу иметь строку поиска, например
парам1 > 4
Я также был бы рад выразить строку поиска следующим образом
param1_GreaterThan =4
и я вижу, как я мог бы написать некоторый код для анализа строки поиска, чтобы определить, что требуется. Однако я чувствую, что я бы решил проблему, которая, должно быть, была решена много раз раньше.
Есть ли хорошо зарекомендовавший себя способ сделать это?
Грэм
Ответ №1:
Существует множество способов реализовать что-то подобное, но один способ приходит на ум как наиболее расширяемый. Используйте две переменные в запросе.
- Больше , чем
http://myapi.com/wafersearch?p1=4amp;op=gt
- Меньше, чем
http://myapi.com/wafersearch?p1=4amp;op=lt
- Равный
http://myapi.com/wafersearch?p1=4amp;op=eq
В качестве альтернативы вы можете использовать перезаписи для передачи переменных непосредственно в метод route / controller.
- Больше , чем
http://myapi.com/wafersearch/gt/4
- Меньше, чем
http://myapi.com/wafersearch/lt/4
- Равный
http://myapi.com/wafersearch/eq/4
Комментарии:
1. Что бы вы порекомендовали сделать
?p1=4amp;op1=gt
для поддержки нескольких параметров?2. Да, это легко может быть
?p1=4amp;p1op=gtamp;p2=2amp;p2op=lt
так, что у вас есть только один маршрут, обрабатывающий всеwafersearch
вызовы с несколькими параметрами и разными операторами.3. Большое спасибо за этот совет. Я думаю, что мне это могло бы пригодиться. Единственное, что меня беспокоит, это то, что это может сделать строку поиска довольно длинной, если бы было большое количество параметров, которые в соответствии с этой схемой имели бы в два раза больше элементов в строке поиска. Я не совсем уверен, сколько параметров будет использоваться на этом этапе, но я думаю, что я читал, что существует ограничение для операций GET.