我有一个有亲戚关系的蓝莓渣。但是,当我想要加载页面时,一些表行没有值。这会导致错误:“尝试读取null上的属性"name”
但是如何忽略这条消息并继续在页面中加载呢?
index.blade:
@foreach($files as $file)
<tr>
<td>{{$file->id}}</td>
<td>{{$file->title}} </td>
<td>{{$file->description_short}} </td>
<td>{{$file->description_long}} </td>
<td>{{$file->file}}</td>
<td>{{$file->language->name}} </td>
<td>{{$file->subfolder->name}} </td>
<td>{{$file->role->name}} </td>
<td>
<a href="{{ route('admin.file.edit',$file->id)}}" class="btn btn-primary">Edit</a>
</td>
<td>
<form action="{{ route('admin.file.destroy', $file->id)}}" method="post">
@csrf
@method('DELETE')
<button class="btn btn-danger" type="submit">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
主计长:
public function index()
{
$files = File::with('subfolder', 'language', 'tag')->get();
$languages = Language::all();
$tags = Tag::all();
$subfolders = Subfolder::all();
$users = User::all();
return view('admin.file.index', compact('files', 'languages', 'tags', 'users', 'subfolders'));
}
我希望索引忽略所有空属性。
发布于 2022-09-30 07:24:04
在php变量之前使用@
,如下所示。
{{@$file->language->name}}
发布于 2022-09-30 07:28:23
同时,通过使用
{{ $file->language->name ?? '' }} # typical PHP way
{{ $file->language?->name }} # if object/relation "language" exist then access "name" propery
注意:
当您将@
用于变量{{@$file->language->name}}
时,我们将跳过错误消息。这意味着我们要告诉“别管这个变量”。--这不是检查空的最好方法
发布于 2022-09-30 09:21:27
有多种方式:
@$file->language->name
-- @
操作符禁止错误消息(imho不太干净:),但结果相同)
来自文档:
//注意:@-运算符只对表达式起作用。一个简单的经验法则是:如果一个人能够获得某物的价值,那么你就可以将@操作符加到它前面。//例如,它可以被添加到变量、函数调用、某些语言构造调用(例如包含)中,等等。//它不能用于函数或类定义,或条件结构,如if和foreach,等等。
$file->language ? $file->language->name : null;
$file->language->name ?? null;
$file->language?->name;
(惊人!:-)
https://stackoverflow.com/questions/73905220
复制相似问题