Zum Beispiel: jeder User hat Rollen zugeordnet (unter Verwendung von Confide):
For example: each User has a Role (using Confide):
public function roles() { return $this->belongsToMany('Role', 'assigned_roles', 'user_id', 'role_id'); }
Wenn keine Rolle definiert ist, wie kann man trotzdem eine Default-Rolle zurück geben?
If no role is defined, how could we return a default role for this user?
Erster Schritt: einen User ‚default‘ anlegen und dessen automatisch erzeugte id auf 0 setzen. Diesem User die niedrigste Rolle zuweisen (z.B. ‚Gast‘).*
First step: add a User ‚default‘ to the user table, change the id that is automatically assigned to 0. Assign the lowest role to this user (e.g. ‚guest‘).*
Zweiter Schritt: wenn keine Rollen in der Relation gefunden werden, die Rolle des Users ‚default‘ zurück geben.
Second step: if not roles are found in the relation, return the role for user ‚default‘ instead:
public function roles() { $roles = $this->belongsToMany('Role', 'assigned_roles', 'user_id', 'role_id'); if($roles == null || $roles->count() <= 0) { $def = User::find(0); return $def->roles(); } return $roles; }
* Ein Id 0 kann allerdings nicht mit seed erzeugt werden, vielleicht ist 1 eine bessere Wahl. Oder statt find(0) mit where(’name‘, ‚=‘, ‚default‘) nach dem Namen suchen.
Unfortunately this change of id cannot be seeded – maybe you use 1 instead. Or use where(’name‘, ‚=‘, ‚default‘) instead of find(0).