2016-12-02 4 views
-2

Ich bin derzeit auf der Suche nach einem Framework zur Unterstützung meines eigenen neuen Frameworks. Laravel scheint meine beste Wahl zu sein.Laravel - Multi Site/Projekt

Ich habe eine sehr spezifische Struktur im Sinn. Mein Projekt wird ein Basisdesign mit gemeinsamen Modellen, Ansichten und Controllern sowie einige Unterprojekte mit bestimmten Ansichten haben. Das Ziel ist es, eine Plattform für Eigentümer desselben Geschäfts zu bieten, wo wir eine einzigartige Website anbieten. In vielen Fällen variiert nur das Design, während die Struktur und Komponenten gleich bleiben. Meine Idee war es, eine wartbare Struktur auf Laravel zu schaffen, von der jeder Standort seine Modelle, Controller und Views abliest und bei Bedarf kann ein zusätzlicher View erstellt werden.

Hat jemand in der Vergangenheit Erfahrungen mit einem ähnlichen Projekt gemacht?

Ich sehe einige große Hindernisse:

  • Teilprojekte erstellen
  • Multi-Datenbankverbindungen
  • Modelle und Ansichten Mit Verwendung vom Hauptprojekt

project setup

Antwort

3

Laravel ist sehr flexibel und in hohem Maße konfigurierbar, sollten Sie kein Problem haben Dinge überhaupt zu machen. Wie für die Datenbank zum Beispiel zwei Verbindungen erstellen: main, eine feste Verbindung zu Ihren Haupt-Datenbanktabellen und project für die aktuellen Projekttabellen, hier ist, wie es aussehen soll:

'main' => [ 
    'driver' => 'pgsql', 
    'host' => env('DB_HOST', 'localhost'), 
    'port' => env('DB_PORT', '5432'), 
    'database' => env('DB_DATABASE', 'forge'), 
    'username' => env('DB_USERNAME', 'forge'), 
    'password' => env('DB_PASSWORD', ''), 
    'charset' => 'utf8', 
    'prefix' => '', 
    'schema' => 'public', 
    'sslmode' => 'prefer', 
], 

'project' => [ 
    'driver' => 'pgsql', 
    'host' => env('DB_HOST', 'localhost'), 
    'port' => env('DB_PORT', '5432'), 
    'database' => env('DB_DATABASE', 'forge'), 
    'username' => env('DB_USERNAME', 'forge'), 
    'password' => env('DB_PASSWORD', ''), 
    'charset' => 'utf8', 
    'prefix' => '', 
    'schema' => 'public', 
    'sslmode' => 'prefer', 
], 

und Sie sollen in der Lage:

konfigurieren Modellverbindung:

<?php 

namespace App; 

class Posts extends Model 
{ 
    protected $connection = 'project'; 
} 

Abfrage Verbindungen direkt:

DB::connection('project')->table('users')->where('activated', true)->get(); 

Konfigurieren Sie die Datenbank in Laufzeit:

config([ 
    'database.connections.project.database' => 'project1db', 
    'database.connections.project.user' => $user, 
    'database.connections.project.password' => $password, 
]); 

Was die Ansichten können Sie Laravel sagen Ansichten zu finden, wo immer Sie, indem Sie einfach tun müssen:

View::addLocation('/path/to/project1/');