Duvida em PHP "belongsToMany"?

Eu uso o trecho de código para matricular o aluno em uma classe:

foreach($students as $student){
        $user=User::where('id', $student)->first();
        $user->classesAsStudent()->attach($id);
}

função

public function classesAsStudent(){
    return $this->belongsToMany('App\Models\Classe');
}

Aí eu leio os alunos que estão matriculados na Turma assim:

@foreach($classe->users as $user)
    {{$user->id }} - {{ $user->name }}
@endforeach

Minha dúvida é se tem uma maneira simples de ler em quais turmas o aluno está matriculado, tipo $user->classes.

Hoje faço assim:

public function showUser($id) {
    $user = User::findOrFail($id);
    $classes = Classe::all();
    foreach ($classes as $classe){
        if($classe->users->contains($user)){
            $joineds[]= $classe;
        }
    }
    return view('users.details', ['user' => $user, 'joineds'=>$joineds]);
}

Mas deve existir uma maneira direta de conseguir isso, não?

Com with, você carrega as classes desse usuário, automáticamente você tem a lista:

$user = User::with('classesAsStudent')->where('id', $student)->first();

Acessando da seguinte forma:

$user->classesAsStudent

Referencia:

1 curtida