Nun, ich habe die Idee von https://stackoverflow.com/a/38297876/518704
Da mein Beziehungsmodell Extension::class
namentlich in meinem Code return $this->belongsToMany(Extension::class,...
aufgerufen wird, kann ich nicht einmal Parameter an seinen Konstruktor übergeben.
Um etwas an den Konstruktor zu übergeben, kann ich statische Klassenvariablen verwenden.
Also in meinem Extension
Modell ich statische Variablen hinzufügen und makeVisible Methode ausführen. Später zerstöre ich die Variablen, um sicherzustellen, dass die nächsten Aufrufe und Instanzen die Standardmodelleinstellungen verwenden.
Ich bewegte dies zu einem Merkmal, aber hier zeige ich an meinem Modellbeispiel.
class Extension extends Model
{
public static $staticMakeVisible;
public function __construct($attributes = array())
{
parent::__construct($attributes);
if (isset(self::$staticMakeVisible)){
$this->makeVisible(self::$staticMakeVisible);
}
}
.....
public function __destruct()
{
self::$staticMakeVisible = null;
}
}
Und in meiner Beziehung verwende ich so etwas wie dieses, was es ist
class User extends Authenticatable
{
...
public function extensions()
{
$class = Extension::class;
$class::$staticMakeVisible = ['password'];
return $this->belongsToMany(Extension::class, 'v_extension_users', 'user_uuid', 'extension_uuid');
}
...
}
jetzt über ich frage. Ich weiß, wie man das Attribut direkt bekommt. Ich übergebe später mein ** seqesToMany ** -Ergebnis an die Json-Ausgabe, also muss ich einige Felder dynamisch ein-/ausblenden. – Gruz