Laravel一些问题(分页,如果 - foreach)

I'm laravel newbie. I'm created simple code and I have some questions: I think this code bad (it works, but I use @forelse($forums as $forum) and anywhere use $forum)

@extends('layouts.main')
@section('content')
@forelse($forums as $forum) <-- I don't like this line, it works but i think it's possible with if or something else
@forelse($topics as $topic)
{{ $topic->title }}<br>
@empty
Sorry but this forums empty.
@endforelse
@empty
Sorry but this forum not found
@endforelse
@stop

And second question how to make pagination? I'm tried this:

<?php 

namespace App\Http\Controllers;
use DB;
use View;

class viewForum extends Controller 
{
    public function showForum($fname, $fid)
    {
        return View::make('forum', [
            'forums'    => DB::table('forums')
                ->where('id', $fid)
                ->where('seo_name', $fname)
                ->select()
                ->get()
                ->simplePagination(5)
        ]);
    }
}

But not work's, I'm tried tutorials..etc, how to? Thanks so much in advance ! :)

for your first question. You can use @foreach or @each. these are the two that i usually used. for your second question:

return View::make('forum', [
            'forums'    => DB::table('forums')
                ->where('id', $fid)
                ->where('seo_name', $fname)
                ->select()
                ->paginate(5);
        ]);

remove ->get()

and replace simplePagination(5) with paginate(5)

documation http://laravel.com/docs/5.0/pagination

Update

change you code block from

return View::make('forum', [
            'forums'    => DB::table('forums')
                ->where('id', $fid)
                ->where('seo_name', $fname)
                ->select()
                ->paginate(5);
        ]);

to

$forums = DB::table('forums')
                    ->where('id', $fid)
                    ->where('seo_name', $fname)
                    ->select()
                    ->paginate(5);
return View::make('forum', compact('forums'));

then check if $forums->render() got error.

Update

$forums = DB::table('forums')
                        ->where('id', $fid)
                        ->where('seo_name', $fname)
                        ->select()
                        ->get(5);
$topics = DB::table('topics')
->where('forum_id', $id)
->select()
->paginate(2)

return View::make('forums', compact('forums', 'topics'));

on your view you do <?php echo $topics->render() ?> since topic is the one you paginate. also you can remove ->select() from your code. if you don't specify fields to output.

For @foreach ($topics as $topic)

            {{$topic->title}}
          @endforeach 

For Pagination

$users = User::where('status','1') ->paginate(10);

Note: In View add this {{$user->links()}} for getting the pagination links.

you can use @foreach() @endforeach and probably @if @else @endif see sample:

@foreach($forums as $forum)
  @if($forum==0)
    {{'empty'}}
  @else
    {{ 'Not empty' }}
  @endif

@endforeach

for pagination i will suggest you use jquery datatable for proper pagination. Its quite okay and saves lots of time. see below the sample implementation:

//this preload the jquery library for datatable together with the print button
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.2/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.2/js/buttons.print.min.js"></script>

//this section call the document ready event making sure that datatable is loaded
<script>

 $(document).ready(function() {
    $('#').DataTable();
  } );

//this section display the datatable
  $(document).ready(function() {
      $('#mytable').DataTable( {
          dom: 'Bfrtip',
          "pageLength": 5, //here you can set the page row limit
          buttons: [
              {
                  extend: 'print',
                  customize: function ( win ) {
                      $(win.document.body)
                          .css( 'font-size', '10pt' )
                          .prepend(
                              ''
                          );

                      $(win.document.body).find( 'table' )
                          .addClass( 'compact' )
                          .css( 'font-size', 'inherit' );
                  }
              }
          ]
      } );
  } );
</script>

//you can display record on the datatable as shown below
<div class="table-responsive col-md-12">
 <table id="mytable" class="table table-bordered table-striped table-highlight">
                                            <thead>
                                              <tr bgcolor="#c7c7c7">
                                                <th>S/N</th>
                                                 <th>Name</th>
                                              </tr>
                                            </thead>

                                            <tbody>

                                              @php
                                              $i=1;
                                              @endphp
                                                @foreach($queryrecord as $list)

                                                   <tr>
                                                   <td>{{ $i++ }}</td>
                                                   <td>{{ $list->name }}</td>
                                                   </tr>
                                               @endforeach
                                                </tbody>

                                          </table>
                                           <hr />
                                        </div>

Note: remember before displaying information on the datatable, you must have query your record from database.i'm using query builder here as sample

$data['queryrecord']=DB::table('tablename')->get();