Eloquent: Return Default Relation

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).

Print Friendly, PDF & Email

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.