Elocuentes de muchos a muchos a muchos: cómo cargar fácilmente una relación distante

Tengo 3 mesas; usuarios, grupos y permisos

En los modelos tengo las relaciones establecidas como belongToMany en el modelo de usuario:

public function groups() {
    return $this->belongsToMany('Group');
}

en modelo de grupo:

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

public function permissions() {
    return $this->belongsToMany('Permission');
}

en modelo de permisos:

public function groups() {
    return $this->belongsToMany('Group', 'id');
}

muchos usuarios - a - muchos grupos muchos grupos - a - muchos permisos

Estoy tratando de obtener todos los permisos que tiene un usuario, y no tengo idea de cómo debería ser el código. ¿Alguien puede ayudar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta