ich einzelne User-eloquent Modell in meinem Laravel App habe:Entrust mit Laravel - Eloquent Abfragen mit bedingtem Rollen
Ich werde für Rollen Entrust werden. Benutzer können mehrere Rollen haben.
ich es geschafft, bereits der Benutzer mehrere Rollen mit demselben eloquent Modell Benutzer wie folgt zu erhalten:
public function company(){
if($this->hasRole('admin')){
return $this->hasOne('App\Company');
}elseif($this->hasRole('member')){
return $this->belongsTo('App\Company');
}
}
Wie dies nehme in Firma Modell in anderen Modellen zu handhaben:
public function admin(){
$this->hasOne('App\User'); //if has role admin
}
public function members(){
$this->hasMany('App\User'); //if has role member
}
Wie funktioniert das?
bearbeiten Ich bin in der Lage, durch die Benutzer zu durchqueren und die damit verbundenen Benutzer mit spezifischer Rolle zu bekommen, aber es fügt null Elemente in der Sammlung:
public function admin(){
return $this->hasOne('App\User')->get()->map(function($u){
if($u->hasRole('admin') && $u != null){
return $u;
}
});
}
Obwohl, ich bin Überprüfung der $u != null
I kann viele Nullobjekte in der Sammlung sehen.
Sie sollten eine 'manages' Beziehung hinzufügen, die dynamisch das entsprechende Modell angebracht werden –
Wie das zu tun? Kannst du es ausarbeiten? –
ja mehrere Rollen pro Benutzer. Und ich benutze trust, die eine Pivot-Tabelle role_user Tabelle für mehrere Beziehungen hat. In der Benutzertabelle gibt es kein Attribut für die Rolle. –