Laravel分页。在首页上显示的对象要比在其余页面上显示的对象少

时间:2019-06-11 07:57:27

标签: laravel

假设我有一个 Post 模型。分页:

library(dplyr)
df <- mtcars
df <- df %>% mutate(c = factor(carb))
dummies <- model.matrix(data = df, ~ c + 0)
dummies <- as_data_frame(dummies)
df <- cbind(df, dummies)
df <- df %>% select(mpg, disp, c1:c3)
head(df)

在模板中,我可以检查当前页面是否是第一页:

$posts = Post::paginate(10);

然后显示消息标题及其图像和描述:

@if($posts->currentPage()==1)
    // here before the posts display something else on the first page
    // ...
@endif

为了不使第一页过载和快速加载,我需要在其上发4个帖子,而不是在其他页面上发10个帖子。

我需要5至10个帖子在第二页上,并且不要丢失。也就是说,我需要从 offset 中减去大量帖子,在这种情况下,除第一页外,所有页面中的帖子数均为6。我不知道如何编辑偏移量

paginate()调用 Illuminate \ Database \ Eloquent \ Builder 类中的方法,其中 forPage()方法来自 Illuminate \ Database \ Query \ Builder 被调用。他调用了 skip()方法,该方法更改了 offset 。这里的困难是我不知道如何将参数 $ delta_offset = 6 传递给此方法,什么可以纠正 offset ?毕竟,供应商中的软件包不会发生变化……我认为我可以继承自 Illuminate \ Database \ Eloquent \ Builder 类,并使我自己的方法在类中进行分页以传输参数,但是在这种情况下,我无法通过这种方式在模型上使用我的方法:

@foreach($posts as $post)
    <div>{{ $post->img }}<\div>
    <div>{{ $post->title }}<\div>
    <div>{{ $post->description }}<\div>
@endforeach
在这种情况下,

ORM在 Illuminate \ Database \ Query \ Builder 类中搜索 myPaginate()方法。

0 个答案:

没有答案