首页 > 解决方案 > Laravel试图通过关系和查询获取非对象的属性“名称”

问题描述

当我尝试以下列方式查询关系时,出现错误尝试获取非对象的属性“名称”

$billing = ServiceProviderBilling::with(['user' => function ($query) {
            $query->where('parent_id', auth()->id());
        }])->get();

如果我使用没有错误

$billing = ServiceProviderBilling::with(['user'])->get();

在我看来

@foreach($billing as $bill)
    {{ $bill->user->name }}
@endforeach

关系

public function serviceProviderBillings()
    {
        return $this->hasMany(ServiceProviderBilling::class);
    }

public function user()
    {
        return $this->belongsTo(User::class);
    }

我该如何解决?

标签: phplaravel

解决方案


这意味着 $bill->user 返回 null。有些账单没有用户,如果你想显示没有用户的账单,你可以使用whereHas方法:

ServiceProviderBilling::with('user')
                      ->whereHas('user', function (Builder $query) { 
                          $query->where('parent_id', auth()->id()); 
                      })->get()

推荐阅读