Erweiterung Eloquent Modelle in Laravel (verwenden verschiedene Tabellen)
Baue ich eine Laravel-Anwendung, die beinhaltet, um verschiedene Arten von leads. Zum Beispiel gibt es zu Refinanzieren, führt und Kauf führt.
Da die Leitungen teilen eine Menge Informationen und Funktionen, aber nicht alle, mein denken war ein Lead
Klasse, die sich Laravel ist Model
Klasse, und dann ein RefinanceLead
- Klasse, die erweitert die Lead
Klasse.
Also ich würd noch:
class Lead extends Model
{
//shared lead stuff
}
class RefinanceLead extends Lead
{
//stuff specific to refinance leads
}
Meine Fragen sind:
- Macht diese Strategie Sinn?
- Wenn ja, wie ist Eloquent gehen, um die Daten zu verarbeiten? Ich habe
leads
Tisch und einrefinance_leads
Tabelle? - Wird eine neue Instanz der RefinanceLead Klasse nutzen, etwas in die
leads
Tabelle?
Ich habe Schwierigkeiten, diese Frage zu beantworten, die über die Dokumentation, aber wenn ich verpasst wo das erklärt wird, lassen Sie es mich bitte wissen. Danke.
- Sie sollten erwägen, Lesen bis zum Dependency Inversion. Zuerst planen Sie Ihre Schnittstellen für jede Art von Blei. Vielleicht finden Sie es besser zu bauen Züge, statt zu verlängern, so sind Sie entkoppelt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
1. Ja, es hat vollkommenen Sinn zu haben, der alle gängigen Funktionen in einem übergeordneten Modell.
2. Im Grunde genommen jeder Beredt Modell wird mit den Daten aus seiner eigenen Tabelle definiert, in der
protected $table
variable. Sie können das überschreiben der übergeordneten Variablen zu setzen, eine separate Tabelle für die verschiedenen child-Modelle. Laravel Tabelle NamenZum Beispiel, wenn Sie die
getId()
Methode auf eine RefinanceLead Instanz wird zurückgegeben, der id von refinance_lead Tabelle. Wenn Sie es auf einer PurchadeLead Instanz wird es retirn die id von purchade_table3. Ich weiß nicht, was sind Ihre Bedürfnisse, aber im Allgemeinen werde ich empfehlen, Führen die Klasse Abstrakt und damit Sie nicht assoziieren eine Tabelle für Sie. Verwenden Sie es nur, um separate Allgemeine Funktionen, Beziehungen, etc...
Natürlich, wie es wurde vorgeschlagen, in den Kommentaren, Implementierung einer Schnittstelle ist immer eine gute Idee.