Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 分页即时加载约束_Php_Laravel_Laravel 4 - Fatal编程技术网

Php 分页即时加载约束

Php 分页即时加载约束,php,laravel,laravel-4,Php,Laravel,Laravel 4,我使用的是Laravel 4: 我试图对一个急切加载的约束进行分页,本质上我有一个主题模型,它与注释模型有很多关系。这一切都很好,没有问题。不过,我希望能够在admins edit主题视图上显示一个分页的注释表(将有数百条注释)。为此,我想我应该使用以下代码: $topic = Topics::with( array( 'comments' => function($query) { $query->orderby('created_at', 'DESC');

我使用的是Laravel 4:

我试图对一个急切加载的约束进行分页,本质上我有一个主题模型,它与注释模型有很多关系。这一切都很好,没有问题。不过,我希望能够在admins edit主题视图上显示一个分页的注释表(将有数百条注释)。为此,我想我应该使用以下代码:

$topic = Topics::with( array( 'comments' => function($query)
    {
        $query->orderby('created_at', 'DESC');
        $query->paginate(10);
    } ) )
->where('id', $id)
->first();
现在,这将为我提供正确的对象
$topic
,检查
$topic->comments
显示它有正确的链接注释,并且限制为10个结果。分页还响应
GET
page参数,并将分页,但是尝试回显
$topic->comments->links()
会导致找不到方法的错误

我的解决办法是进行第二次查询,统计所附评论,然后在我的视图中使用以下内容:

$paginator = Paginator::make($topic->comments->toarray(), $commentCount, 10);
echo $paginator->appends(array('tab' => 'comments'))->links();

这是一个错误吗?

当您在您的急切约束上调用
paginate()
时,它正在为您配置查询(设置跳过和执行)。生成的分页器实际上将被丢弃

既然您只得到一个带有注释的主题,为什么不这样做(相同数量的数据库调用)

$topic=topic::find($id);
$comments=$topic->comments()->order_by('created_at DESC')->paginate(10);

诚然,您将无法使用
$topic->comments
来获取分页器,而必须使用
$comments
,但这并不是一件可怕的事情。

我怀疑这就是分页发生的情况。谢谢你的建议,正如你所说的,它同样有效——只是没有那么漂亮:)