Search code examples
phplaravelrouteslaravel-4

Laravel previous and next records


I am trying to create a page where I can see all the people in my database and create edits on them. I made a form where I fill in the data from the database of certain fields.

I would like to navigate trough them by a Next and Previous button.

For generating the next step I have to take the ID larger than the current one to load the next profile.

For generating the previous step I have to take the ID smaller than the current one to load the previous profile.

My route:

Route::get('users/{id}','UserController@show');

Controller:

public function show($id)
    {

        $input = User::find($id);

        // If a user clicks next this one should be executed.
        $input = User::where('id', '>', $id)->firstOrFail();



        echo '<pre>';

        dd($input);

        echo '</pre>';

        return View::make('hello')->with('input', $input);
    }

View: The buttons:

<a href="{{ URL::to( 'users/' . $input->id ) }}">Next</a>

What is the best approach to get the current ID and increment it?


Solution

  • Below are your updated controller and view files derived from @ridecar2 link,

    Controller:

    public function show($id)
    {
    
        // get the current user
        $user = User::find($id);
    
        // get previous user id
        $previous = User::where('id', '<', $user->id)->max('id');
    
        // get next user id
        $next = User::where('id', '>', $user->id)->min('id');
    
        return View::make('users.show')->with('previous', $previous)->with('next', $next);
    }
    

    View:

    <a href="{{ URL::to( 'users/' . $previous ) }}">Previous</a>
    <a href="{{ URL::to( 'users/' . $next ) }}">Next</a>