3

我在我的一个项目中实现了 laravel 分页,其中分页就像一个魅力。

我需要在表格顶部和表格底部显示分页链接。像这样

{!! $entries->render() !!}
<table class="table table-responsive" id="entries-table">
    <thead>
        <tr>
                <th>ID</th>
                <th>Advisor name</th>
        </tr>
    </thead>
    <tbody>
    @forelse($entries as $entries)
        <tr>
            <td> {{ $entries->id }} </td>
            <td> {{ $entries->name }} </td>
        </tr>
    @empty
    <tr>
        <td>
            <p>No record found.</p>
        </td>
    </tr>
    @endforelse
    </tbody>
</table>
{!! $entries->render() !!}

当我尝试{!! $entries->render() !!}在表格底部或同一页面的任何位置再使用一次时,它会抛出以下错误。

ErrorException (E_ERROR) 调用未定义的方法 App\Models\Entries::render()

这是我的控制器代码

public function index(Request $request)
    {            
        $entries = Entries::orderBy('id', 'DESC')->paginate(15);

        return view('entries.index')
            ->with('entries', $entries);
    }

在这里,我正在$entries使用控制器中转储变量dd($entries),这就是我得到的。

LengthAwarePaginator {#425 ▼
  #total: 215
  #lastPage: 15
  #items: Collection {#436 ▼
    #items: array:15 [▼
      0 => entries {#437 ▶}
      1 => entries {#438 ▶}
      2 => entries {#439 ▶}
      3 => entries {#440 ▶}
      4 => entries {#441 ▶}
      5 => entries {#442 ▶}
      6 => entries {#443 ▶}
      7 => entries {#444 ▶}
      8 => entries {#445 ▶}
      9 => entries {#446 ▶}
      10 => entries {#447 ▶}
      11 => entries {#448 ▶}
      12 => entries {#449 ▶}
      13 => entries {#450 ▶}
      14 => entries {#451 ▶}
    ]
  }
  #perPage: 15
  #currentPage: 1
  #path: "https://samplesite.com/entries/11"
  #query: []
  #fragment: null
  #pageName: "page"
  +onEachSide: 3
  #options: array:2 [▼
    "path" => "https://samplesite.com/entries/11"
    "pageName" => "page"
  ]
}

查看我与您分享的此视频以获得更好的想法

4

4 回答 4

1

您不应该在 foreach 上的变量中给出相同的名称,这可能会导致可能发生的冲突。错误可能是因为 abigu 变量来自 eloquent 结果或来自循环中的结果。

尝试像这样重构您的代码

@forelse($entries as $entrie)
    <tr>
        <td> {{ $entrie->id }} </td>
        <td> {{ $entrie->name }} </td>
    </tr>
@empty
<tr>
    <td>
        <p>No record found.</p>
    </td>
</tr>
@endforelse
于 2020-02-12T07:43:58.400 回答
1

您正在$entries使用 中的集合项覆盖集合@forelse

@forelse($entries as $entries)
    <tr>
        <td> {{ $entries->id }} </td>
        <td> {{ $entries->name }} </td>
    </tr>
@empty

更改$entries$entry

@forelse($entries as $entry)
    <tr>
        <td> {{ $entry->id }} </td>
        <td> {{ $entry->name }} </td>
    </tr>
@empty
于 2020-02-20T14:59:35.823 回答
1

确保您在刀片中返回准确的集合。

$users= User::paginate(15);

return view('entries', compact('users'));

你已经可以在你的刀片中使用这条线了。

{!! $entries->links() !!}

或者

{!! $users->render() !!}

并且在你的 for each 中,把它改成这个

@forelse($entries as $entry)
     <tr>
         <td> {{ $entry->id }} </td>
         <td> {{ $entry->name }} </td>
     </tr>
@empty

尝试将您的控制器更改为此。

  public function index(Request $request)
    {            
            $entries = entries::where('form_id', '=', $id)->orderBy('id', 'DESC')->paginate(15);

            return view('entries.index')
                ->with('entries', $entries);
    }
于 2020-02-12T07:52:38.707 回答
0

你试过{{ $entries->links() }}吗?

更新

在你的控制器中你能试试这个吗

    $users = User::paginate(1);
    dd($users->links(), $users->links());

你有同样的错误吗?

于 2020-02-12T07:22:18.480 回答