在代码的各个部分中,我尝试回显或以其他方式使用相关模型中的数据,例如
{{ $jobApplication->job->title }}
到目前为止,我总是使用 Blade 条件来回显数据(仅当数据存在时):
@if (! empty ($jobApplication->job))
{{ $jobApplication->job->title }}
@endif
...这很痛苦。
在相关问题( Laravel 4: fetching only models that have related models )中,据说没有解决方法。
看来我不是唯一一个想知道( PHP - How to catch a 'Trying to get property of non-object' error )是否可以捕获此异常的人。然而,正如接受的答案所指出的,这个“尝试获取非对象的属性”不是一个异常(exception),而是一个错误。
添加几乎无穷无尽的 if 子句来检查相关模型是否存在真的是唯一的解决方案吗?
我的意思是,当正常情况下会返回此错误时,如何才能使 Laravel 返回“null”?这是一件非常愚蠢的事情吗?
最佳答案
你可以尝试这样的事情:
{{ isset($jobApplication->job) ? $jobApplication->job->title : '' }}
您还可以使用如下方式仅获取具有相关模型的模型:
$jobApplication = JobApplication::has('job')->with('job')->get();
现在 $jobApplication
包含具有相关 Job
模型的模型,但仅包含那些具有相关 Job
模型的 JobApplication
有了它。
关于php - 如何彻底摆脱 "Trying to get property of non-object"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23859966/