我正在制作一个视图,以显示用户及其所服务的公司。
在我的用户模型中,我返回如下视图:
return view('users.index', ['users' => $model->all()]);
$ model-> all()模型是我的用户模型。
然后在我的index.blade文件中,我像这样遍历数据:
@foreach ($users as $user)
<tr>
<td>{{ $user->name }}</td>
<td>
<a href="mailto:{{ $user->email }}">{{ $user->email }}</a>
</td>
<td>{{ $user->created_at->format('d/m/Y H:i') }}</td>
<td>{{ $user->company->name }}</td>
<td class="text-right">
<div class="dropdown">
<a class="btn btn-sm btn-icon-only text-light" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v"></i>
</a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
@if ($user->id != auth()->id())
<form action="{{ route('user.destroy', $user) }}" method="post">
@csrf
@method('delete')
<a class="dropdown-item" href="{{ route('user.edit', $user) }}">{{ __('Edit') }}</a>
<button type="button" class="dropdown-item" onclick="confirm('{{ __("Are you sure you want to delete this user?") }}') ? this.parentElement.submit() : ''">
{{ __('Delete') }}
</button>
</form>
@else
<a class="dropdown-item" href="{{ route('profile.edit') }}">{{ __('Edit') }}</a>
@endif
</div>
</div>
</td>
</tr>
@endforeach
但是当我尝试显示$ user-> company-> name时,出现以下错误:
试图获取非对象的属性“名称”
我尝试使用dd($ user-> company)进行调试,它显示了与用户连接的公司的所有公司信息。然后我尝试了dd($ user-> company-> name),它显示了公司名称。
我不明白为什么我不能只显示$ user-company-> name而没有收到错误,但是当我dd($ user-> company-> name)时却显示公司名称。
有人能指出我正确的方向吗?
答案 0 :(得分:3)
它可能显示错误,因为您的一个用户没有公司。循环的第一个有一个,这就是为什么当您dd($user->company)
时看到一家公司。但这并不意味着第二个或第三个具有一个。您可以执行if语句来捕获任何null
公司。
if($user->company == null){
dd($user);
}
或者,您可以只执行dd($users->pluck('company','id'));
,这将向您显示一个集合,其中用户ID为键,而关联公司(或null)为值。
答案 1 :(得分:1)
您可以使用CheckButton
助手来解决此问题。有些用户没有公司。因此,您可以像这样optional()
来显示它们,如果用户没有公司,则不会出现错误
答案 2 :(得分:0)
如果您尝试获取关系对象的值,可能会遇到这种类型的错误。由于某些用户没有公司详细信息。
只需尝试以下代码即可。
{{ @$user->company->name }}