Rufen Sie Laravel Modell von string
Ist es möglich, den Anruf ein Laravel model von string?
Dies ist, was ich versuche zu erreichen, aber sein Ausfall:
$model_name = 'User';
$model_name::where('id', $id)->first();
Bekomme ich die folgende exception:
exception 'ErrorException' with message 'Undefined variable: User'
- versuchen Sie es mit dem vollen namespace wie
$model_name = 'App\Http\Model\User';
- Das klappte aber eigentlich bin ich versucht, es zu tun, die von einer Instanz-variable und das ist noch immer nicht:
${$this->model_name}::where
- können Sie beschreiben, wie dein Kommentar bitte?
- Natürlich ist es auch möglich
app($model_name)->where(....)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können dies tun, aber Sie müssen verwenden Sie den vollständig qualifizierten Klassennamen:
Wenn Ihr Modell name gespeichert ist, in etwas anderes als eine einfache variable (z.B. ein Objekt-Attribut), müssen Sie verwenden Sie eine temporäre variable, um diese zu arbeiten.
Versuchen Sie dies:
Du kannst es ja machen mit flexibler Art und Weise. Erstellen Sie eine gemeinsame Funktion.
Rufen Sie nun diese Methode auf unterschiedliche Weise.
Durch die Art, wie ich verwenden, solche Funktionen.
wenn Sie es in viele der Orte, die diese Funktion verwenden,
Beispiel, wenn Sie wollen, bekommen alle Benutzer
Szenario 1:
Szenario 2:
wenn Ihr Modell in benutzerdefinierten namespace kann
App\Models
Hoffe es hilft
Diese Methode sollte gut funktionieren:
Mein Projekt hat mehrere Unterverzeichnis und diese Funktion gut funktioniert. Also ich wieder den Namensraum des Modells mit
$model = current($this->getNamespace($this->request->get('model')));
Dann muss ich nur noch meine Abfrage:
$model::all()