You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5:数据库无数据时first()->paginate()报空对象调用错误

问题分析与解决方案

这个问题我太熟悉了!咱们来一步步搞清楚原因,再给你搞定正确的写法:

为什么会报错?

当你使用Internetradiostations::first()时,如果数据库里没有任何网络电台数据,这个方法会直接返回null。紧接着你调用paginate()方法,就会触发Call to a member function paginate() on null错误——毕竟null根本没有paginate这个方法嘛!

为什么latest()->paginate(5)不会报错?

latest()是Laravel查询构造器的方法,它返回的是一个Builder实例(不管数据库有没有数据,这个实例都存在)。调用paginate()后,哪怕没有数据,也会返回一个空的分页集合,自然不会报错。

正确实现:最早创建的排首位且无数据不报错

你想要的是最早创建的网络电台排在表格首位,本质是按创建时间升序排序,然后分页。直接用查询构造器的orderBy方法就能实现,而且完全避免空数据报错:

// 按created_at升序排序,最早创建的排在最前面,然后分页
$internetradiostations = Internetradiostations::orderBy('created_at', 'asc')->paginate(5);

return view('internetradiostationsviewer', compact('internetradiostations')) 
       ->with('i', (request()->input('page', 1) - 1) * 5);

这样写的好处:

  • 不管数据库有没有数据,orderBy()都会返回合法的查询构造器实例
  • 调用paginate()后,要么返回带数据的分页集合,要么返回空分页集合,不会出现null调用方法的错误
  • 完美满足"最早创建的排首位"的需求

内容的提问来源于stack exchange,提问作者Teun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:14:30