Laravel Vue 페이지네이터 충돌
https://localhost.com?search=?year=2020
그런 다음 다음 페이지 버튼을 클릭하면 쿼리 문자열이 다음과 같이 표시됩니다.
https://localhost.com?page=1
여기에서 문제를 볼 수 있습니까? 이제 결과는 페이지를 매긴 결과에 쿼리 문자열을 포함하지 않기 때문에 모든 연도를 반영합니다. 그래서....이 문제를 어떻게 고칠까요? 실제로는 매우 간단합니다. 다음은 수정 이전의 백엔드에서 쿼리 문자열이 어떻게 생겼는지입니다.
잘못된
/**
* Display a listing of the resource.
*
* @param Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if ($request->ajax()) {
return new IncomeResource($request->user()->incomes()
->where(function($query) use ($request) {
$query->where('name', 'like', "%{$request->search}%")
->orWhere('amount', 'like', "%{$request->search}%")
->orWhere('notes', 'like', "%{$request->search}%")
->orWhereHas('client', function ($query) use ($request) {
$query->where('clients_name', 'like', "%{$request->search}%");
});
})
->whereYear('date_income_received', 'like', "%{$request->year}%")
->with('client.sessions')
->orderBy('date_income_received', 'desc')
->paginate(10);
)
}
}
오른쪽
/**
* Display a listing of the resource.
*
* @param Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if ($request->ajax()) {
$paginator = $request->user()->incomes()
->where(function($query) use ($request) {
$query->where('name', 'like', "%{$request->search}%")
->orWhere('amount', 'like', "%{$request->search}%")
->orWhere('notes', 'like', "%{$request->search}%")
->orWhereHas('client', function ($query) use ($request) {
$query->where('clients_name', 'like', "%{$request->search}%");
});
})
->whereYear('date_income_received', 'like', "%{$request->year}%")
->with('client.sessions')
->orderBy('date_income_received', 'desc')
->paginate(10);
$paginator->appends([
'search' => $request->search,
'year' => $request->year
]);
return new IncomesResource($paginator);
}
}
Laravel paginator에는 URL에 쿼리 문자열 데이터를 추가하는 데 사용할 수 있는 append 메소드가 있습니다. 이렇게 하면 다음 또는 이전 버튼을 클릭할 때마다 해당 쿼리 문자열을 적용하는 링크에 쿼리 문자열이 자동으로 추가됩니다.
즐기다! 이 두통에서 다른 누군가를 돕기를 바랍니다.
Reference
이 문제에 관하여(Laravel Vue 페이지네이터 충돌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/jringeisen/laravel-vue-paginator-conflict-26jh
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
/**
* Display a listing of the resource.
*
* @param Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if ($request->ajax()) {
return new IncomeResource($request->user()->incomes()
->where(function($query) use ($request) {
$query->where('name', 'like', "%{$request->search}%")
->orWhere('amount', 'like', "%{$request->search}%")
->orWhere('notes', 'like', "%{$request->search}%")
->orWhereHas('client', function ($query) use ($request) {
$query->where('clients_name', 'like', "%{$request->search}%");
});
})
->whereYear('date_income_received', 'like', "%{$request->year}%")
->with('client.sessions')
->orderBy('date_income_received', 'desc')
->paginate(10);
)
}
}
/**
* Display a listing of the resource.
*
* @param Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if ($request->ajax()) {
$paginator = $request->user()->incomes()
->where(function($query) use ($request) {
$query->where('name', 'like', "%{$request->search}%")
->orWhere('amount', 'like', "%{$request->search}%")
->orWhere('notes', 'like', "%{$request->search}%")
->orWhereHas('client', function ($query) use ($request) {
$query->where('clients_name', 'like', "%{$request->search}%");
});
})
->whereYear('date_income_received', 'like', "%{$request->year}%")
->with('client.sessions')
->orderBy('date_income_received', 'desc')
->paginate(10);
$paginator->appends([
'search' => $request->search,
'year' => $request->year
]);
return new IncomesResource($paginator);
}
}
Laravel paginator에는 URL에 쿼리 문자열 데이터를 추가하는 데 사용할 수 있는 append 메소드가 있습니다. 이렇게 하면 다음 또는 이전 버튼을 클릭할 때마다 해당 쿼리 문자열을 적용하는 링크에 쿼리 문자열이 자동으로 추가됩니다.
즐기다! 이 두통에서 다른 누군가를 돕기를 바랍니다.
Reference
이 문제에 관하여(Laravel Vue 페이지네이터 충돌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jringeisen/laravel-vue-paginator-conflict-26jh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)