-2

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

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

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

我看到了一些主要障碍:

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

项目设置

4

1 回答 1

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/');
于 2016-12-02T12:32:16.430 回答