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

Laravel调用stdClass::isEmpty()报错,查询结果判空失败如何解决

问题原因分析
  • DB::table()->get()返回的是Illuminate\Support\Collection集合实例,只有集合本身才有isEmpty()、count()这类方法
  • 你在@foreach中遍历得到的$pl1是集合中的单个元素,类型为stdClass普通对象,不存在isEmpty()方法,因此触发了Call to undefined method stdClass::isEmpty()报错
正确实现方案

你当前的代码加了@break只需要取第一条数据,完全不需要遍历,更推荐使用方案1,性能更高逻辑更清晰。

方案1:直接取单条数据(推荐)

控制器优化

将原代码末尾的->get()替换为->first(),直接返回单个stdClass对象,没有匹配数据时返回null:

$paperlist1 =   DB::table('upload_papers')
                        ->join('courselist','courselist.id', '=', 'upload_papers.courselist_id')
                        ->join('users','users.id','=','upload_papers.upload_by')
                        ->select('upload_papers.file_name','upload_papers.paper_no','upload_papers.path','users.role_id')
                        ->where([
                            ['courselist.faculty_id','=',$facultyid],
                            ['upload_papers.courselist_id','=',$id],
                            ['upload_papers.paper_no','=',1]
                            ])
                        ->first();

Blade代码优化

直接判断对象是否存在即可:

<tr>
@if($paperlist1)
    @if($pl1->role_id === 2)
    <td><a href="/{{ $pl1->path }}">{{ $pl1->file_name }}</a></td>
    @else
    <td>-</td>
    @endif
    @if($pl1->role_id === 3)
    <td><a href="/{{ $pl1->path }}">{{ $pl1->file_name }}</a></td>
    @else
    <td>-</td>
    @endif
@else
    <td>-</td>
    <td>-</td>
@endif
</tr>

方案2:保留原遍历逻辑的修正方式

把isEmpty()判断移到foreach外层,作用在集合实例上即可:

<tr>
@if(!$paperlist1->isEmpty())
    @foreach($paperlist1 as $pl1)
        @if($pl1->role_id === 2)
        <td><a href="/{{ $pl1->path }}">{{ $pl1->file_name }}</a></td>
        @else
        <td>-</td>
        @endif
        @if($pl1->role_id === 3)
        <td><a href="/{{ $pl1->path }}">{{ $pl1->file_name }}</a></td>
        @else
        <td>-</td>
        @endif
        @break
    @endforeach
@else
    <td>-</td>
    <td>-</td>
@endif
</tr>
额外注意

如果需要判断单个$pl1对象的某个字段是否为空,直接使用empty($pl1->字段名)即可,不要调用普通对象不存在的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:03