在 laravel 中查看某些 id 的返回错误
Posted
技术标签:
【中文标题】在 laravel 中查看某些 id 的返回错误【英文标题】:View returns error for certain ids in laravel 【发布时间】:2017-12-04 15:18:23 【问题描述】:这对我来说真的很奇怪。当我想显示行中的数据时,一些数据返回错误。
我只能查看id
s (1-7, 10, 13-17,22 and so)
的数据,id
(8,9,11,12,18,19,20,21..)
的数据返回错误。
如果我去http://manajemenpasien.com/PasienPoli/17
,我会得到我期望的页面。但是当转到这个http://manajemenpasien.com/PasienPoli/19
时,我得到了这个错误:
ErrorException in Collection.php line 1564:
Property [nama] does not exist on this collection instance. (View: D:\myProjects\manajemenPasien\resources\views\PasienPoli\show.blade.php)
[nama]
是表pasiens
中的字段名
这就是我在PasienPoliController
中的内容:
public function show($id)
$pasienpoli = PasienPoli::find($id);
$pasien = Pasien::find($id)->PasienPoli;
return view('pasienpoli.show', compact('pasienpoli','pasien'));
PasienPoliModel
:
public function pasien()
return $this->belongsTo('App\Pasien');
帕西恩Model
:
public function pasienpoli()
return $this->hasMany('App\PasienPoli');
show.blade.php
:
<h2>$pasienpoli->pasien->nama</h2>
pasien_polis
的表结构:
id - int(10) - auto_increment
polyclinic_id - int(11)
pasien_id - int(11)
penyakit - varchar(50)
pasiens
的表结构:
id - int(10) - auto_increment
nama - varchar(50)
这有什么问题?
【问题讨论】:
【参考方案1】:这些 id 很可能在您的数据库中不存在。检查您的数据库或 dd 您视图中的集合以了解发生了什么。
【讨论】:
我查过了,都存在。 dd($pasienpoli) 看看你有什么数据 dd withid
=10 我得到数据,dd with id
=19,它说空。
抱歉id
=19 为空,id
=9 显示芯片转储结果。但是在 `id=10 显示数据时删除 dd()
时出错。
我发现了问题。当我用$pasienpoli->pasien->nama
替换时,显示页面中有一个隐藏字段表单,此值$pasien->nama
已解决。无论如何,感谢您的宝贵时间。【参考方案2】:
修改你的代码:
public function show($id)
if(($pasienpoli = PasienPoli::find($id)) == NULL)
return view('pasienpoli.notfound', []);
$pasien = Pasien::find($id)->PasienPoli;
return view('pasienpoli.show', compact('pasienpoli','pasien'));
如果 id 不存在,您可以返回另一个视图或您想要的。
【讨论】:
我发现了问题。显示页面中有一个隐藏的表单字段,当我用$pasienpoli->pasien->nama
替换它时,这个值$pasien->nama
解决了。无论如何,感谢您的宝贵时间。以上是关于在 laravel 中查看某些 id 的返回错误的主要内容,如果未能解决你的问题,请参考以下文章