Laravel Spat ie Query Builder: правильный способ использования API с Axios - PullRequest
0 голосов
/ 25 апреля 2020

В 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, или случаях?

...