Laravel-试图获取非对象的属性“名称”

时间:2019-08-05 13:47:53

标签: laravel

我正在制作一个视图,以显示用户及其所服务的公司。

在我的用户模型中,我返回如下视图:

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)时却显示公司名称。

有人能指出我正确的方向吗?

3 个答案:

答案 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 }}