【发布时间】:2021-03-15 12:01:10
【问题描述】:
我有用户表并有 4 个角色(学生、教师、超级管理员、家长)。 我正在使用此代码在 laravel 中使用 Morphtomany 关系将父母与学生联系起来
public function Parent()
{
return $this->morphToMany('App\Models\User', 'user_parent');
}
当超级管理员想要创建一个新用户并选择一个角色作为家长时,将出现学生列表,以便从具有学生角色的用户中选择孩子的名字。 我只想选择与父母没有联系的学生(仍然与父母没有关系的学生)。 我正在使用此代码从数据库中获取学生
$users = User::whereDoesntHave('Parent')->whereHas(
'roles', function($q){
$q->where('id', 5);
}
)->get();
但此代码也返回有父母的学生。我不想检索。
这是表的架构
CREATE TABLE `user_parents` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_parent_id` bigint(20) DEFAULT NULL,
`user_parent_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`user_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3157 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
【问题讨论】: