我有这个奇怪的问题,
我的刀片视图中有此代码
<input type="text" class="form-control" id="c_{{App\Models\Field::where([['material_id',$material->id],['question',$fillable->name]])->first()->id}}">
这将返回此错误
Trying to get property 'id' of non-object (View: create.blade.php) (View:create.blade.php)
但是当我放弃它用dd()
这样的
@php
dd(App\Models\Field::where([['material_id',$material->id],['question',$fillable->name]])->first()->id)
@endphp
它告诉我没有错误并转储记录的 id
怎么了 为什么它在一个地方起作用而在另一个地方却不起作用?
是的,因此,如果找不到对象,此查询就可以产生错误。
我确定,您正在for循环中使用此输入。因此,当您添加dd时,它将获得第一个对象,该对象存在并正确渲染。当您删除dd时,它将根据您的渲染进行多次查询,并且如果它捕获了一个错误的对象并提取了该对象,则它将停止所有脚本
相反,您可以执行以下操作
@php
$field = App\Models\Field::where([['material_id',$material->id],['question',$fillable->name]])->first();
@endphp
@if($field && $field->id)
<input type="text" class="form-control" id="c_{{ $field->id}}">
@else
// warning field object not found
@endif
或者,您可以添加@以抑制该错误。
<input type="text" class="form-control" id="c_{{@ App\Models\Field::where([['material_id',$material->id],['question',$fillable->name]])->first()->id}}">
请注意,像这样执行查询可能会导致n + 1个查询问题,这意味着它要多次执行查询,而这并不是提高性能的有效方法
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句