В бэкэнде Laravel у меня есть метод контроллера customers.index
:
$result = $department->Customers()->getQuery();
$result = QueryBuilder::for($result)
->allowedFilters([
'title',
'description',
'email',
'phone'
])
->defaultSort('title')
->allowedSorts([
'title',
'email'
]);
$result = $result->paginate($request->per_page ?: 10)->appends(request()->query());
return response()->json([
'message' => '',
'data' => $result
]);
Теперь в интерфейсе Vuejs я хочу, чтобы строка запроса была похожа на
host/api/customer?page=2&per_page=15&filter[title]=foo
Я попробовал этот подход:
const params = {
page: this.page,
per_page: 15,
filter: {
search: this.query
}
};
console.log(JSON.stringify(params));
this.$axios
.get(`/api/customer`, {
params
});
Но строка запроса стала:
customer?0=%7B%22page%22:1,%22per_page%22:15,%22filter%22:%7B%22search%22:%221231%22%7D%7D
У меня есть другой вариант: используйте литерал шаблона, например:
api/customer?filter[search]=${this.query}&page=${this.page}&per_page=${this.per_page}
Вопрос 1:
как получить правильную строку запроса из объекта params
Вопрос 2:
есть ли какая-либо документация по этому пути строки запроса
filter[title]=...
? как я могу использовать их в случаях AND или Or?
1 ответ
Ваша проблема в том, что вы устанавливаете строки запроса в качестве параметров.
this.$axios
.get(`/api/customer`, {
params
});
Должно быть.
this.$axios
.get(`/api/customer`, {
params: params
});
У них есть документация. Если вы хотите использовать сложную логику, я, вероятно, посмотрю, как она обрабатывает области действия. Затем вы выполняете логику в области Laravel
и позволяете разработчику обрабатывать их.
Похожие вопросы
Новые вопросы
laravel
Платформа Laravel — это веб-инфраструктура PHP с открытым исходным кодом, которая позволяет разработчикам создавать динамические и масштабируемые веб-приложения. Исходный код Laravel размещен на GitHub и выпущен под лицензией MIT.