我正在构建一个应用程序,我在某些表上有一个雄辩的关系设置。但是,当我从数据库中提取数据并尝试在我的表单中显示时,如果行不存在,我得到一个错误:
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") !!}
但我不建议这样做。相反,在控制器中编写逻辑并将该数据传递给该视图。