php - 如何彻底摆脱 "Trying to get property of non-object"错误?

标签 php laravel error-handling laravel-4 runtime-error

在代码的各个部分中,我尝试回显或以其他方式使用相关模型中的数据,例如

{{ $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有了它。

检查Querying Relations .

关于php - 如何彻底摆脱 "Trying to get property of non-object"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23859966/

相关文章:

php - 如何阻止 Woocommerce 添加到购物车重定向到产品页面

php - extjs 4 : filling model data into combobox from PHP + MySql

php - 将默认配置与用户选项合并

php - 拉拉维尔 5 : AppServiceProvider vs custom provider

php - 如何使用 v1 API 将 FCM 通知发送到特定设备 token 列表

php - 在 null 上调用成员函数 setCookie() - Laravel 5.8

php - 找不到列 : 1054 Unknown column '_token' in 'field list' Laravel

c++ - 字符串未正确复制并显示错误: cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}'

javascript - Uncaught ReferenceError : platform is not defined

git - smartgit:执行命令失败:主干已过时