在我的代码的各个部分中,我试图回应或以其他方式使用相关模型中的数据,例如
{{ $jobApplication->job->title }}
到目前为止,我总是使用刀片条件来仅在存在时回显数据:
@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)是否可以捕获此异常的人。然而,正如公认的答案所指出的那样,“试图获得非对象的属性”不是例外,而是一个错误。
这是否真的是添加几乎无穷无尽的 if 子句以检查相关模型是否存在的唯一解决方案?
我的意思是,如果通常会返回错误,那么让Laravel返回“null”会怎样? Woudl这是一件非常愚蠢的事情吗?
答案 0 :(得分:2)
您可以尝试这样的事情:
{{ isset($jobApplication->job) ? $jobApplication->job->title : '' }}
此外,您可能只使用以下内容获取具有相关模型的模型:
$jobApplication = JobApplication::has('job')->with('job')->get();
现在$jobApplication
包含具有相关Job
模型的模型,但仅包含与JobApplication
模型相关的Job
模型。