Laravel에서 이전 및 다음 레코드 얻기

This post was originally published at PostSrc 🔥🔥🔥 . 이런 종류의 튜토리얼이 마음에 드시면 방문해 주시면 정말 감사하겠습니다.



이전 리소스와 다음 리소스를 탐색할 수 있다는 것은 매우 편리한 기능입니다. 이렇게 하면 양쪽(왼쪽 및 오른쪽)의 레코드 간에 쉽게 탐색할 수 있습니다. 구현은 매우 간단하지만 모델에서 올바른 결과를 얻으려면 특정 논리를 명확하게 정의해야 합니다.

예제 시나리오
  • PostSrc 이전 및 다음 게시물
  • Laracast 이전 및 다음 에피소드 시리즈

  • 이 기능을 구현하는 방법에는 여러 가지가 있으며 가장 간단한 방법은 모델 ID를 사용하는 것입니다. ID가 자동으로 증가하므로 최신 게시물이 항상 가장 오래된 게시물보다 높은 숫자를 가질 것이라고 가정할 수 있습니다.

    이전 및 다음 구현
    이전 및 다음 게시물을 가져오려면 아래 코드를 사용합니다. 정의한 컨트롤러 내에 있고, 그렇지 않으면 애플리케이션에 적합한 다른 위치에 있음을 유의하십시오.

    function show(int $id)
    {
        // get the current post
        $post = Post::find($id);
    
        // get previous post id
        $previous = Post::where('id', '<', $post->id)->max('id');
    
        // get next post id
        $next = Post::where('id', '>', $post->id)->min('id');
    
        return view('posts.show', compact('post', 'previous', 'next'));
    }
    


    위의 예에서는 "id"를 사용하여 쿼리하여 기본 게시물을 가져옵니다. 이전 및 다음 게시물을 얻기 위해 우리는 최저 및 최고 게시물 모델 "id"값을 가져와서 where 절을 사용합니다. 모델을 얻은 후에는 다른 모델과 비교하여 이전 게시물에 대해 "최대"를 얻고 다음 게시물에 대해 "최소"를 얻습니다. 이렇게 하면 기본적으로 기준과 일치하는 모델만 가져오도록 모델이 필터링됩니다.

    이전 및 다음 비디오/에피소드
    모델 "id"를 사용하지 않는 다른 시나리오에서는 숫자 값을 저장할 "episode_number"와 같은 열을 정의해야 합니다.

    function show(int $id)
    {
        // get the current episode
        $episode = Episode::find($id);
    
        // get previous episode number
        $previous = Episode::where('episode_number', '<', $post->episode_number)->max('episode_number');
    
        // get next episode number
        $next = Episode::where('episode_number', '>', $post->episode_number)->min('episode_number');
    
        return view('episodes.show', compact('episode', 'previous', 'next'));
    }
    

    좋은 웹페이지 즐겨찾기