php - 我如何连接到 laravel 中的多个数据库以进行相同的查询?

标签 php mysql laravel

<分区>

我想执行一个与 laravel 中所有数据库相关的原始查询。所以我不想指向特定的数据库。我怎样才能在 Laravel 中做到这一点?

这是我的代码:

$sql = 'SELECT table_schema \"DB_Name\",
                Round(Sum(data_length + index_length) / 1024 / 1024, 2) \"DB_Size_in_MB\"
        FROM  information_schema.tables
        GROUP BY table_schema';
$dbs_size = DB::statement($sql);

如您所见,我的查询并未指向任何特定的数据库。所以我想我不应该使用 DB::。我该怎么做?

注意到我当前的代码抛出了这个糟糕的错误:(仅此而已)

Whoops, looks like something went wrong.

最佳答案

首先,您过于随意地使用双引号,这在 MySQL 查询中是不应该发生的。

其次,根据https://laravel.com/docs/5.4/database#running-queries , statement 不返回任何内容。

您有几个选项可以使用多个数据库:

1)原始选择

$sql = 'SELECT table_schema DB_Name,
            Round(Sum(data_length + index_length) / 1024 / 1024, 2) DB_Size_in_MB
    FROM  information_schema.tables
    GROUP BY table_schema';
$dbs_size = DB::select($sql);

2) 通过在 config/database.php

中添加条目来配置 laravel 使用该数据库
//other database configs

"information_schema" => [
         'driver'    => 'mysql',
         'database'  => 'information_schema',
         'username'  => 'user',
         'password'  => 'pass',
         'charset'   => 'utf8',
         'collation' => 'utf8_unicode_ci',
         'prefix'    => ''
]

然后查询通过:

 $dbs_size = DB::connection("information_schema")->table("tables")->groupBy("table_schema")->select(DB::raw("...")); // rest of the query..

关于php - 我如何连接到 laravel 中的多个数据库以进行相同的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173617/

相关文章:

php - 如何提醒ajax返回的数据?

带有子查询的 MySQL 条件更新

php - 使用 SQL 和 PHP 进行日期排序

php - 拉维尔 : Method [show] does not exist

php - Laravel withCount 包含 null 关系

laravel 4 关系 - 如何显示用户投票记录的前 5 名排名

php - 这种格式的日本日期

php - Wordpress 有一个讨厌的重定向不允许 ssl

php - 防止 Laravel 5.5 中 3 列出现多个值

php - 从 DB PHP 生成一个包含 <td> 值的表行