Php 在使用Relaship进行筛选时,尝试获取非对象属性时发生Larvel错误
当我尝试获取的值时,尝试获取非对象的属性时出现错误Php 在使用Relaship进行筛选时,尝试获取非对象属性时发生Larvel错误,php,laravel,Php,Laravel,当我尝试获取的值时,尝试获取非对象的属性时出现错误 {{ $user->adminProfile->company_name }} 这里adminProfile与用户模型有关系。关系定义正确 当我使用 $users = User::role('admin')->with('adminProfile')->get(); 它工作得很好。然而,当使用一个以上的过滤器时,我会得到错误 $users = User::role('admin')->with(['adminP
{{ $user->adminProfile->company_name }}
这里adminProfile与用户模型有关系。关系定义正确
当我使用
$users = User::role('admin')->with('adminProfile')->get();
它工作得很好。然而,当使用一个以上的过滤器时,我会得到错误
$users = User::role('admin')->with(['adminProfile' => function($q) {
$q->where('status', 1);
}])->get();
问题是,您正在使用admin角色获得所有用户,但您只加载状态为1的adminProfiles
这意味着您将拥有adminProfile
关系将返回null
的用户
为了筛选出没有状态为1的adminProfile
的用户,您必须使用a,而不是状态为1的:
$users = User::role('admin')->whereHas(['adminProfile' => function($q) {
$q->where('status', 1);
}])->get();
问题是,您正在使用admin角色获得所有用户,但您只加载状态为1的adminProfiles
这意味着您将拥有adminProfile
关系将返回null
的用户
为了筛选出没有状态为1的adminProfile
的用户,您必须使用a,而不是状态为1的:
$users = User::role('admin')->whereHas(['adminProfile' => function($q) {
$q->where('status', 1);
}])->get();
与用户相关的管理员配置文件的状态是否为1
?是。它的布尔值为1或0。你得到了一个集合,想要得到模型值。你能给我们看看这个关系吗?return$this->hasOne(AdminProfile::class)
和返回$this->belongsTo(User::class)代码>这是摘要是与用户相关的管理员配置文件的状态1
?是。它的布尔值为1或0。你得到了一个集合,想要得到模型值。你能给我们看看这个关系吗?return$this->hasOne(AdminProfile::class)
和返回$this->belongsTo(User::class)代码>这是总结,谢谢。但我觉得我没能解释清楚。AdminProfile也是一个模型,与用户模型只有一个关系。我正在利用与的关系。状态是AdminProfile模型中的一列。基本上我使用2个过滤器-按管理员角色和状态;来自不同表的每个用户您只想显示其adminProfile
上状态==1的用户,对吗?谢谢。但我觉得我没能解释清楚。AdminProfile也是一个模型,与用户模型只有一个关系。我正在利用与的关系。状态是AdminProfile模型中的一列。基本上我使用2个过滤器-按管理员角色和状态;来自不同表的每个用户您只想显示其adminProfile
上状态==1的用户,对吗?