在 laravel 中查看某些 id 的返回错误

Posted

技术标签:

【中文标题】在 laravel 中查看某些 id 的返回错误【英文标题】:View returns error for certain ids in laravel 【发布时间】:2017-12-04 15:18:23 【问题描述】:

这对我来说真的很奇怪。当我想显示行中的数据时,一些数据返回错误。 我只能查看ids (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 with id=10 我得到数据,dd with id=19,它说空。 抱歉id=19 为空,id=9 显示芯片转储结果。但是在 `id=10 显示数据时删除 dd() 时出错。 我发现了问题。当我用$pasienpoli-&gt;pasien-&gt;nama 替换时,显示页面中有一个隐藏字段表单,此值$pasien-&gt;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-&gt;pasien-&gt;nama 替换它时,这个值$pasien-&gt;nama 解决了。无论如何,感谢您的宝贵时间。

以上是关于在 laravel 中查看某些 id 的返回错误的主要内容,如果未能解决你的问题,请参考以下文章

查看laravel auth / user对象中是否存在某些东西

php join 多个查询结果 laravel

Laravel 路由返回不正确的模型以查看

Laravel Eloquent:返回数组键作为字段 ID

在 Laravel 中使用 AJAX GET 方法发送请求

Laravel 5.8 Eloquent Create() 返回错误的 ID