Ich baue ein Paket, das stark auf einer Morph-Viele-Beziehung beruht. Wie üblich bei dieser Beziehung ist es erforderlich, die Beziehungen zu definieren, etwa so:Laravel 5 Dynamische Morph-Methode
public function foos()
{
return $this->morphToMany('App\Models\Foo', 'barable');
}
Das funktioniert offensichtlich gut und es ist hier kein Problem.
Die Sache ist, dass es viele dieser Beziehungen gibt, die definiert werden müssen. Und ich möchte sie einfach durchlaufen und automatisch erstellen, um die Konfiguration des Pakets zu vereinfachen.
Ich habe folgendes versucht:
public function __get($name)
{
if($name == 'foos') {
return $this->morphToMany('App\Models\Foo', 'barable');
}
}
Dies die Abfrage nicht initiieren, um die Daten abzurufen. Es wird aufgerufen, aber es gibt keine Daten zurück.
Die __call-Funktion erschien mir auch logisch, aber das bricht Laravel. Soweit ich das beurteilen kann, nimmt es alles auf, was in der Klasse aufgerufen wird.
Eine Alternative ist jetzt, ein Merkmal hinzuzufügen und den Programmierer diese Beziehungen in der publizierbaren Datei ausfüllen zu lassen, aber das fühlt sich einfach falsch an.
Irgendwelche Vorschläge?