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
相关产品推荐
相关产品推荐

