如何在Laravel中编写原始查询

6

我需要在Laravel数据库中使用原始查询:查询构建器,输出特定表的大小。

在核心mysql查询中,如下所示:

SELECT table_name "Name_of_the_table", table_rows "Rows Count", round(((data_length + index_length)/1024/1024),2)
"Table Size (MB)" FROM information_schema.TABLES WHERE table_schema = "Name_of_the_Database" AND table_name ="Name_of_the_table";
2个回答

11

您可以使用 Laravel 中的原始查询来获取记录,示例代码如下:

$sql = 'SELECT table_name "Name_of_the_table", table_rows "Rows Count", round(((data_length + index_length)/1024/1024),2)
"Table Size (MB)" FROM information_schema.TABLES WHERE table_schema = "Name_of_the_Database" AND table_name ="Name_of_the_table"';

$results = DB::select($sql);

即使您不需要使用DB :: raw()来选择原始查询,DB :: select()也可以为您完成所有操作。 - Abdulrehman Sheikh
使用DB; //放在控制器的顶部,非常完美。谢谢,只需要几分钟就可以让它变成绿色:D :D :D - Hemant Maurya
你可以使用 Use DB; 或者 \DB::select($sql); 来操作数据库。这就是 Laravel 的美妙之处,兄弟! - Abdulrehman Sheikh

6

您可以使用查询构建器,因为您可以将原始部分最小化到表的大小:

$data = DB::table('information_schema.TABLES')
    ->where('table_schema', 'Name_of_the_Database')
    ->where('table_name', 'Name_of_the_table')
    ->select(
        'table_name as "Name_of_the_table"',
        'table_rows as "Rows Count"',
         DB::raw('round(((data_length + index_length)/1024/1024),2) as "Table Size (MB)"')
    )
    ->first();

这非常有帮助,谢谢!当计数错误时,我使用它来获取非常大表的行数。我只是重新表述问题,以便在搜索时也能显示出来;-) - tabacitu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接