0

对于stackoverflow,这可能不是一个合适的问题......因为它可能太具体了。

但我想知道是否有人知道我将如何安装一个 Laravel,服务于一个站点。但根据 url,我可以访问不同的数据库。

IE...

www.mainsite.com/company1/login - 数据库1

www.mainsite.com/company1/users - 数据库1

..

www.mainsite.com/company2/login - 数据库2

www.mainsite.com/company2/users - 数据库2

因此,在上述情况下,所服务的站点是完全相同的站点。但当然,每个部分都有一个登录名,并访问不同的数据库。

我知道我可以通过安装多个 laravel 来做到这一点,而这实际上就是我现在正在做的事情......

但我希望能够只更新一个版本....而不是必须将我的更改复制到所有不同的文件夹。

然后只需将该站点提供给所有多个不同的公司。他们只能访问他们的数据库

这可能吗??

4

2 回答 2

0

您可以在配置中定义多个数据库:

'default' => 'database1',
'connections' => array(
    'database1' => array(
        'driver'   => 'mysql',
        'host'     => 'localhost',
        'database' => 'database1',
        'username' => 'root',
        'password' => '',
        'charset'  => 'utf8',
        'prefix'   => '',
    ),

    'database2' => array(
        'driver'   => 'mysql',
        'host'     => 'localhost',
        'database' => 'database2',
        'username' => 'root',
        'password' => '',
        'charset'  => 'utf8',
        'prefix'   => '',
    ),

), 

然后使用fluent查询:

$user = DB::connection('database2')->table('users')->where('id', '=', 1)->first();

也许你可以使用环境,像这样:

$environments = array(
  'company1' => array('http://server.com/company1*'),
  'company2' => array('http://server.com/company2*'),
);

然后在配置中创建子文件夹并复制 db 配置以根据需要进行编辑。

于 2013-07-12T21:50:02.980 回答
0

我为此使用的一种技术是为注册的新客户生成数据库名称并将其存储在我的主数据库中。此时也将创建和迁移数据库。此后,当用户每次登录时,软件都会查找他的数据库名称并使用以下命令即时为他们设置配置:

Config::set(['database.connections.customerid']).

你仍然可以拥有 Laravel 和 Eloquent 提供的所有好东西,而不必依赖原始查询。这也使您免于管理大型配置文件。我还创建了与他们的架构名称匹配的资源目录,这样他们就可以拥有一个自定义的前端站点,其中包含视图文件和样式,同时运行与其他人完全相同的堆栈。

于 2017-06-16T05:43:36.320 回答