【发布时间】:2015-04-22 14:37:34
【问题描述】:
好的,所以我正在尝试设置一个范围,该范围将根据 hasOne 关系中的列限制返回哪些用户。
这是我的用户模型中的两种方法:
public function scopeHasImage($query)
{
return $query->with(['profile' => function($query){
$query->where('avatar', '!=', '');
}]);
}
public function profile()
{
return $this->hasOne('App\Profile');
}
当我这样称呼它时:
$users = User::HasImage()->simplePaginate(15);
所有这些都可以正常工作,直到我像这样在刀片模板中显示代码:
@foreach($users as $user)
<div class="col-xs-12 col-sm-3 col-md-2">
<a href="{{ route('user.profile.public', ['id' => $user->id]) }}">
<img class="img-responsive" src="{{ $user->profile->avatar }}" />
</a>
</div>
@endforeach
这会导致这个错误:
Trying to get property of non-object
我已经转储了 $user->profile,它是一个列出了属性的对象,其中一个属性是头像。所以我不确定为什么这不起作用。
任何想法将不胜感激。
【问题讨论】:
-
您是否尝试确定发生在哪一行错误?
-
这个错误是由刀片模板中的{{ $user->profile->avatar }}产生的。如果我删除该代码,它会加载所有内容。
-
尝试转储
$users而不是$user->profile以确认是否每个人都有所需的属性。您能否向我们展示一下您在哪里以及如何进行预加载?
标签: php laravel eloquent laravel-5