不同的数据库,相同的网站....与Laravel

时间:2013-07-12 21:19:04

标签: php database laravel laravel-3

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

但是我想知道是否有人知道如何安装Laravel,为网站提供服务。但根据网址,我可以访问不同的数据库。

...即

www.mainsite.com/company1/login - database1

www.mainsite.com/company1/users - database1

...

www.mainsite.com/company2/login - database2

www.mainsite.com/company2/users - database2

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

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

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

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

这可能吗?

2 个答案:

答案 0 :(得分: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'   => '',
    ),

), 

然后使用流利的查询:

$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 config的副本。

答案 1 :(得分:0)

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

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

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