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

Laravel 5中show方法返回空查询,无数据显示问题求助

Laravel视图无法显示Eloquent数据的问题排查

我的问题

我是Laravel新手,正在用Eloquent操作数据,想按照文档把数据传到视图展示,但遇到了问题:

控制器代码:

public function show(PhoneBook $phoneBook) { 
    return view('admin.phonebook.show',compact('phoneBook',$phoneBook)); 
}

视图代码:

<strong>id</strong> {{ $phoneBook->id }}<br> 
<strong>calldate</strong> {{ $phoneBook->calldate }}<br> 
<strong>description</strong> {{ $phoneBook->description }}

页面只显示<strong>里的标题文字,数据内容完全没显示,也没任何报错,这是怎么回事?


问题原因与解决办法

嘿,我一眼就看到问题出在compact()的用法上啦!

compact()函数的正确用法是只传入变量名的字符串,你现在写的compact('phoneBook',$phoneBook)多传了一个$phoneBook变量参数,这完全没必要——虽然这个错误不会直接报错,但可能导致变量传递异常(不过这里更可能是路由模型绑定的小问题)。

先把控制器代码改成正确的写法:

public function show(PhoneBook $phoneBook) { 
    // 只传变量名字符串就够了
    return view('admin.phonebook.show', compact('phoneBook')); 
}

或者你也可以用数组传递,这种写法更直观,新手不容易搞混:

public function show(PhoneBook $phoneBook) { 
    return view('admin.phonebook.show', ['phoneBook' => $phoneBook]); 
}

改完之后如果还是没数据,那就要检查路由模型绑定是否生效了:

  • 确保你的路由是这样写的:Route::get('/admin/phonebook/{phoneBook}', [YourController::class, 'show']);——这里的路由参数{phoneBook}必须和控制器方法里的变量名$phoneBook完全一致(大小写也要注意哦)
  • 检查PhoneBook模型的主键是不是id,如果你的表主键不是id,要在模型里加上protected $primaryKey = '你的主键字段名';
  • 最后确认数据库里这条记录的id、calldate、description字段确实有值,别是空的😂

按这几步排查下来,应该就能看到数据正常显示啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:42:00