У меня есть настройка базы данных, в которой у вас есть лектор, имеющий много групп, и в каждой группе много студентов, а также студент может быть во многих группах. Поэтому у меня есть отношения один ко многим между лектором и группами (соответственно) и отношения многие ко многим между студентами и группами.
Я хочу показать лектору, сколько у них студентов в целом. Например, если у лектора 5 групп по 5 студентов в каждой, то я хочу показать 25. Я попробовал это auth()->user()->userable->groups()->withCount('students')
, но я получил это:
Вызов функции-члена getRelationExistenceCountQuery () со значением NULL
Отредактировано, вот отношения:
# 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');
}
}
Какой самый эффективный способ получить желаемый результат?