laravel отношение многие ко многим получают данные из сводной таблицы - PullRequest
0 голосов
/ 22 марта 2020

У меня есть отношения многие ко многим между пользовательскими и классными моделями

это структура:

- users
  - id
  - name

- classroom_user
   - classroom_id
   - user_id
   - is_teacher

- classrooms
  - id
  - name

это отношения:

модель пользователя:

public function classrooms() {
    return $this->belongsToMany(Classroom::class)->withPivot('is_teacher');
}

модель класса:

public function users() {
    return $this->belongsToMany(User::class)->withPivot('is_teacher');
}

public function teachers() {
    return $this->belongsToMany(User::class)->where('is_teacher','=',1);
}

public function students() {
    return $this->belongsToMany(User::class)->where('is_teacher','=',0);
}

Я хочу проверить, является ли текущий зарегистрированный пользователь учителем в текущем классе или нет, получив значение столбца is_teacher.

в настоящее время делает это следующим образом:

auth::user()->classrooms->find($classroom->id)->pivot->is_teacher

Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 22 марта 2020

Я бы просто сделал это так, чтобы избежать проблем в случае, если классная комната не существует:

$classroom = auth::user()->classrooms()->find($classroom->id);
if (! $classrooom) {
   // throw/return an error accordingly
} 
$isTeacher = $classrooom->pivot->is_teacher

PS: Занятия в классах с круглыми скобками чрезвычайно важны, в противном случае вы возвращаете все классные комнаты, которые принадлежат пользователь и делает фильтрацию на стороне PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...