我有一个数据库设置,您有一个讲师,讲师有多个小组,每个小组有很多学生,一个学生也可以分成许多小组。因此,我分别在讲师和小组之间存在一对多的关系,在学生和小组之间存在一对多的关系。
我想告诉讲师他们总共有多少学生。例如,如果讲师有5个小组,每个小组有5个学生,那么我想显示25个。我尝试了此auth()->user()->userable->groups()->withCount('students')
,但我得到了:
在null上调用成员函数getRelationExistenceCountQuery()
已编辑,以下是关系:
# user model
class User extends Authenticatable{
public function userable(){
return $this->morphTo();
}
}
# staff/lecturer model
Staff extends Model {
public function user(){
return $this->morphOne(User::class, 'userable');
}
public function groups(){
return $this->hasMany(Group::class);
}
}
#group model
class Group extends Model {
public function staff(){
return $this->belongsTo(Staff::class);
}
public function students(){
$this->belongsToMany(Student::class, 'groups_students', 'group_id');
}
}
# student model
class Student extends Model {
public function groups(){
return $this->belongsToMany(Group::class, 'groups_students', 'student_id');
}
}
获得理想结果的最有效方法是什么?
答案 0 :(得分:2)
func speakNum(_ num:Int) {
let strgNum = String(num)
for t in 0...strgNum.count {
let index = strgNum.index(strgNum.startIndex, offsetBy:t)
//strgnum.index(strgNum.startIndex, offsetBy:t)
print(String(strgNum[index]))
}
}
缺少Group::students()
语句:
return
您可以获得这样的学生总数:
public function students(){
return $this->belongsToMany(Student::class, 'groups_students', 'group_id');
^^^^^^
}