2017-10-11 1 views
0

J'ai un modèle de rôleLaravel force de suppression échoue

class Role extends EntrustRole 
{ 
    public function permissions() 
    { 
    return $this->belongsToMany('App\Permission', Config::get('entrust::permission_role_table')); 
    } 
} 

Maintenant, je voudrais supprimer un certain rôle

$role = Role::where("display_name",'=', $request->route("role"))->first(); 
$role->delete() //fails 
$role->forceDelete() //also fails 

Les rendements ci-dessus une erreur

message www/html/laravel/keybrands/vendor/laravel/framework/ src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php"

"Class name must be a valid object or a string"

Le modèle d'autorisation est dans l'espace de noms App.

Où pourrais-je me tromper?

+0

Afficher le rôle modèle modal – Vikash

+0

rôle @Vikash est dans la question –

+0

« * Où pourrais-je aller mal * ». Erreur: "* Le nom de la classe doit être un objet valide ou une chaîne *". Mot-clé: ** Nom de la classe **. Où utilisez-vous les noms de classe dans le code que vous nous avez donné? Dans la méthode 'belongsMany'. Donc, il y a votre débogage 101 (il y a aussi toute la trace de pile d'erreur qui vous donnerait cette ligne particulière, utilisez-la). – Mjh

Répondre

2

Essayez comme ceci:

class Role extends EntrustRole 
{ 

    public function permissions() 
    { 
     return $this->belongsToMany(Permission::class, config('entrust::permission_role_table')); 
    } 
} 
+0

stil renvoie la même erreur –

+0

Merci de partager le code du modèle de permission –

+0

après d'innombrables débogage ive vu l'erreur est causée par un trait de confiance. J'ai dû ajouter la relation des utilisateurs dans le modèle de rôle maintenant cela fonctionne. –

0

Vérification sur le stacktrace a montré l'erreur étant provoquée par le trait Entrust.

J'ai réussi à résoudre ce problème en ajoutant au modèle de rôle.

public function users() 
{ 
    return $this->belongsToMany(Config::get('auth.providers.users.model'),Config::get('entrust.role_user_table'),Config::get('entrust.role_foreign_key'),Config::get('entrust.user_foreign_key')); 

}