2016-12-02 7 views
-2

私は現在、自分自身の新しいフレームワークをサポートするためのフレームワークを探しています。ララヴェルは私の最高の選択と思われる。Laravel - マルチサイト/プロジェクト

私は非常に具体的な構造を念頭に置いています。私のプロジェクトでは、一般的なモデル、ビュー、コントローラ、およびそこに特定のビューを持ついくつかのサブプロジェクトを持つ基本設計が行われます。目標は、同じビジネスのオーナー向けに、ユニークなウェブサイトを提供するためのプラットフォームを提供することです。多くの場合、デザインだけが異なり、構造とコンポーネントは同じままです。私の考えは、すべてのサイトがモデル、コントローラー、ビューを引き出すという、維持可能な構造を作成することでした。特定の必要性がある場合、追加のビューを作成することができます。

誰かが過去にsimularプロジェクトの経験を持っていましたか?

私はいくつかの主要な障害を参照

:メインプロジェクトからモデルとビューを使用して、複数のデータベース接続

  • を使用してサブプロジェクト
  • を作成

    project setup

  • 答えて

    3

    Laravelです非常に柔軟性が高く設定可能なので、問題はありませんそんなことをまったくやっている。データベースとしては、例えば、あなたが2つの接続を作成することができます

    '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', 
    ], 
    

    そして、あなたがすべき:main、メインのデータベーステーブルへの固定接続、および現在のプロジェクトテーブルのprojectを、ここではそれがどのように見えるかですことができるように:

    設定モデル接続:直接

    <?php 
    
    namespace App; 
    
    class Posts extends Model 
    { 
        protected $connection = 'project'; 
    } 
    

    クエリ接続:

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

    設定し、実行時におけるデータベース:あなたは、単に実行して必要な場所のビューについては

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

    、あなたはビューを見つけるために、Laravelを伝えることができます。

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