2017-05-05 1 views
0

복잡한 쿼리를 만드는 것이 처음부터 내게 쉽기 때문에 Laravel에서 원시 SQL 쿼리를 사용하고 있습니다.Raw 쿼리를 사용한 Laravel 페이지 매기기

지금 나는 사용자 7의 코멘트 목록을 얻으려면, 나는 내가 가진 무엇을 그 5

에, 코멘트를 쪽수를 매기다 싶습니다 :

$comments = DB::select(DB::raw("SELECT users.name, reviews.comment, reviews.comment_score FROM reviews JOIN users WHERE reviews.user_id = :logged_user;") 
    ,array('logged_user' => $user_id,)); 

그래서이 쿼리 따라

보기를 참조하는 사용자에게 변수를받습니다.

나는 페이지 매김을 위해 Eloquent 쿼리를 사용하는 것으로 나타 났으며 명확한 사용법을 찾지 못했습니다.

'-> paginate (5)'를 마지막 괄호 끝에 추가하거나 나중에 $ comments-> paginate (5)와 같은 변수에 추가하면; 내가 얻을 :

오류 :

이 일부 빛 배열

에 멤버 함수 PAGINATE()를 호출?

고맙습니다. =)

답변

0

당신은 페이지 매김을 위해 이렇게합니다.

$perPage = $request->input("per_page", 10); 
$page = $request->input("page", 1); 
$skip = $page * $perPage; 
if($take < 1) { $take = 1; } 
if($skip < 0) { $skip = 0; } 

$comments = DB::select(DB::raw("SELECT users.name, reviews.comment, reviews.comment_score FROM reviews JOIN users WHERE reviews.user_id = :logged_user;"),array('logged_user' => $user_id,)); 

$totalCount = $comments->count(); 
$results = $comments 
    ->take($perPage) 
    ->skip($skip) 
    ->get(); 
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($results, $totalCount, $take, $page); 

return $paginator; 

희망이 있으면 도움이 될 것입니다.

+0

와우, 나는 그런 트릭을 생각해 내지 못했을 것이다. =) $ 요청 변수가 없기 때문에 문제가 있습니다. 하나의 사용자 페이지에 대한 요약 정보가있는 환영 페이지를 표시하기 만하면됩니다. 그래서 알 겠어 : 정의되지 않은 변수 : 요청 감사합니다! – ButterySAM777

+0

한 사용자에 대한 귀하의 의견 매기기를 원한다면 위의 코드에서 꼬리표가 필요하거나 특정 사용자의 의견 매김을 위해 datatable을 사용할 수 있습니다. –

+0

알아요.하지만 $ perPage 및 $ page 변수를 얻는 방법을 모르겠습니다. 나는 $ request 변수가 없다. 어떻게이 두 변수를 초기화 할 수 있습니까? 도움 주셔서 감사합니다. – ButterySAM777