2016-06-02 3 views
0

Es ist eine Laravel-Website, die nur ein Problem mit den Tabellenpräfixen hat.Kapsel-Manager-Tabellenpräfixe werden nicht verwendet

Es ist eine MySQL-Tabelle von statischen Seiten hat cleaning_pages genannt und in public/index.php Ich habe folgendes setzen kurz vor dem Kernel ‚s Instanziierung:

use Illuminate\Database\Capsule\Manager as Capsule; 

$capsule = new Capsule(); 
$capsule->addConnection([ 
    'driver' => 'mysql', 
    'host' => 'somehost.com', 
    'database' => 'database', 
    'username' => 'username', 
    'password' => 'password', 
    'port' => 3306, 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => 'cleaning_', 
]); 

$capsule->setAsGlobal(); 
$capsule->bootEloquent(); 

Ich habe es das Präfix gegeben cleaning_ auf speichern zu müssen hässliche Klassennamen. Ich habe dann eine neue Eloquent Modellklasse genannt Page, aber dann, wenn ich es wie so statisch an anderer Stelle nennen:

public function fetchPage($slug) 
{ 
    return \App\Models\Page::where('page_slug', '=', $slug)->get(); 
} 

Es wirft eine QueryException:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.pages' doesn't exist 

Wenn aber nur rein aus Gründen der diese Prüfung, habe ich folgendes Recht in der index.php Datei direkt nach den $capsule Sachen von oben:

print_r(\App\Models\Page::where('page_slug', '=', $slug)->get()); 

Es quer ies der richtige Tisch in Ordnung. Ich dachte, dass die Methode Manager::setAsGlobal() globalen statischen Zugriff ermöglichen sollte?

Antwort

0

Ich bin ein Idiot. Ich musste das Präfix in config/database.php, nicht nur in der Manager Instanz setzen. Aber das wirft eine weitere Frage auf: Überschreibt die Datenbankkonfiguration immer eine Manager Instanz, die Sie erstellen, selbst wenn Sie sie als global festlegen? Oder verstehe ich dieses Recht nicht?

Verwandte Themen