Laravel 5.1 - blade给出错误当没有记录存在雄辩的关系设置


Laravel 5.1 - blade gives error when no record exists in eloquent relationship setup

我正在构建一个应用程序,我在某些表上有一个雄辩的关系设置。但是,当我从数据库中提取数据并尝试在我的表单中显示时,如果行不存在,我得到一个错误:

Trying to get property of non-object (View: /home/vagrant/Code/App/public/resources/views/themes/default/admin/editContractor.blade.php)

如果该行存在于数据库中,则页面加载正常,没有错误。需要注意的是,这些字段是可选的,因此它们可能并不总是存在于数据库的数据透视表中。

下面这行似乎引起了这个问题:

{!! Form::text($rate->field, $user->rates()->where('rate_id', $rate->id)->first()->pivot->value) !!}

如何解决这个问题?

在回显该值之前,您可以检查该值是否存在

{!! Form::text($rate->field, ($user->rates()->where('rate_id', $rate->id)->first()) ? $user->rates()->where('rate_id', $rate->id)->first()->pivot->value : null) !!}

在我看来,你应该这样做:

{!! Form::text($rate->field, ($user->rates()->where('rate_id', $rate->id)->first()) or "Your default value") !!}

但我不建议这样做。相反,在控制器中编写逻辑并将该数据传递给该视图。