Laravel - 多站点/项目

时间:2016-12-02 12:15:10

标签: php database laravel project-setup

我目前正在寻找支持我自己的新框架的框架。 Laravel似乎是我的最佳选择。

我有一个非常具体的结构。我的项目将具有基本设计,包括通用模型,视图和控制器,以及具有特定视图的一些子项目。我们的目标是为同一个企业的所有者提供一个平台,我们提供一个独特的网站。在许多情况下,只有设计变化,而结构和组件保持不变。我的想法是在laravel上创建一个可维护的结构,每个站点从中拉出模型,控制器和视图,如果有特定需要,可以创建一个额外的视图。

过去有人有过类似项目的经验吗?

我看到一些主要障碍:

  • 创建子项目
  • 使用多数据库连接
  • 使用主项目中的模型和视图

project setup

1 个答案:

答案 0 :(得分:3)

Laravel非常灵活,可配置性很强,你可以毫无问题地做这样的事情。例如,对于数据库,您可以创建两个连接:main,与主数据库表的固定连接,以及当前项目表的project,这里应该是什么样的像:

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

你应该能够:

配置模型连接:

<?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/');