我目前在我自己的自定义非 laravel 网站上使用 laravel 3 数据库类,但我在 laravel 4 上重建站点。我有 2 个网站共享包含product
表的相同数据库,然后每个站点都有自己的数据库用于站点特定表喜欢orders
。
这是我目前与 laravel 3 数据库类一起使用的内容。
/**
* /database/connection.php
* Prepend database names onto tables.
*/
private function prepend_database_names($sql)
{
$tables = array('product', 'product_brand'); // etc...
if (is_array($tables))
{
foreach($tables as $table)
{
$sql = preg_replace("/`$table`/", 'shared_db.`'.$table.'`', $sql);
}
}
return $sql;
}
// This is put inside the execute function
protected function execute($sql, $bindings = array())
{
// other code...
$sql = $this->prepend_database_names($sql);
// other code...
}
我想做类似的事情,但不编辑供应商文件夹中的任何文件。 除非有人知道更好的方法。
我在这方面的知识不多。也许扩展 L4 数据库类并将共享数据库中的表名列表存储到 L4config/database.php
文件中?
编辑:
下面是一个查询示例。这很好用,因为我shared.
在产品之前添加了,但我不想每次使用共享数据库中的表时都必须这样做。
DB::table('searches')
->join('shared.product', 'product.id', '=', 'searches.product_id')
->get();