질문을 삭제하지 말아주세요.!
 
1
0
-1

이 메소드에서 

  $articles = $this->cache($cacheKey, 5, $query, 'paginate', 5);

이부분에 paginate를 없애고 싶어서 

$articles = $this->cache($cacheKey, 5) 이렇게만 했는데 안되더라구요.api를 봐도 저기 $query이후에 인자들이 필수라는

말은 없는것같은데요... 혹시 저 상태에서 paginate없이 캐쉬값을 받아오고 싶다면 어떻게 해야 할까요?

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      테스트는 안 해봤는데, 아래처럼 하면 되지않을까요?


      $articles = \Cache::remember($cacheKey, 5, function () use ($query) {

          return $query->paginate(5);

      });


      https://laravel.kr/docs/5.4/cache#cache-usage

      1. 이용준

        아 제가 하려는것은 paginate를 5로 한정짓지 않고  무한 스크롤을 만들려는 것입니다ㅠㅠ 안되는것 알지만 그냥

        $articles = \Cache::remember($cacheKey, 5, function () use ($query) {
            return $query->get();
        });  

        이런거요 ㅠ

      2. 김주원

        무한 스크롤과 캐시는 어울리지 않습니다. 목록을 최신 순으로 나열한다고 가정했을 때, 아래와 같이 쿼리를 구성해 보시면 어떨까요? 

        $query = (new Article)->newQuery();
        $lastItemId = $request->input('last_item_id');
        
        if ($lastItemId !== null) {
            $query->where("id", '<', $lastItemId);
        }
        
        return $query->latest()->paginate(5);


        클라이언트 쪽에서 GET /articles?last_item_id=100 으로 요청하면 서버는 99~95를 응답합니다.

        다시 클라이언트가 GET /articles/?last_item_id=95 로 요청하면 서버는 94~90을 응답합니다. 


        직접 구현이 어려우시다면, 구글에서 "laravel infinite scroll"로 찾아 보세요.

      CommentAdd your comment...