2016-08-19 5 views
2

Ich bemerkte, dass ich die Datenbanktabellennamen ziemlich viel und in verschiedenen Dateien schreibe, wenn ich den Abfrage-Generator verwende. Wenn ich die Namen der Datenbanktabellen ändern würde, müsste ich ziemlich viele Zeilen in meinem Projekt suchen und ändern. Ist das ein Problem, das deine Laravel-Jungs bemerkt haben und eine Lösung gefunden haben?Laravel Query Builder und Tabellennamen

Ich mag den Eloquent-Ansatz, der Klassenmodelle anstelle von Datenbanknamen verwendet; aber für einige Fragen halte ich den Query Builder für eine bessere Lösung (obwohl ich in dieser Hinsicht kein Experte bin).

Antwort

-1

Wie wäre es OOP Konzept. Laravel ist ein Framework, also hindert Sie niemand daran, das grundlegende PHP OOP-Konzept zu verwenden. Das ist, was ich tue:

Betrachten Sie meine Frage ist, wie:

$result=DB::table('myTable')->select()->get(); 

Was ich tue, ist eine Klasse machen, die die Tabellennamen alle gilt:

class TableName 
{ 
    private $tableName= "myTable"; 
    public function getTableName() 
    { 
     return $this->tableName; 
    } 

    public function setTableName($table_name) 
    { 
     $this->tableName = $table_name; 
    } 
} 

alles, was ich jetzt tun müssen, ist, Aufruf einer Methode ein Objekt in der Datei ich den Tisch wie verwenden möchten:

$name = new TableName() ; 
$result=DB::table($name->getTableName())->select()->get(); 

verwenden, wo immer Sie wa nt. Ich denke nicht, dass es die beste Lösung ist, aber es funktioniert für mich. Hoffe es hilft

+0

Danke, das sieht gut aus; Ich könnte es versuchen. – Olof84

2

verwenden in Ihrer Suchanfrage:

(new YourModel())->getTable() 

Beispiel:

DB:raw('SELECT * FROM '.(new User())->getTable().' WHERE id=3'); 
+0

Interessant. Könnte das gemacht werden, ohne das Rohe zu verwenden? – Olof84

+0

Ja, diesen Code erhalten Sie nur den Tabellennamen, Sie können es überall verwenden, es ist einfacher als das Hinzufügen von mehr Code Ich denke, dass dies eine bessere Lösung als die andere Antwort ist. – neoteknic

+0

Es gibt Zeiten, in denen Sie kein Modell haben. Wenn Sie beispielsweise ein System bereits installiert haben (z. B. Magento). Jetzt möchten Sie seine Datenbank verwenden, Sie können kein Modell daraus machen, da die Tabelle nicht im Weg ist, Sie müssen sie nur auswählen. Aber für ein normales Modell ist Ihre Lösung perfekt +1 zu Ihnen –