【问题标题】:How to write raw query in Laravel如何在 Laravel 中编写原始查询
【发布时间】:2019-07-13 19:36:40
【问题描述】:

我需要在 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";

【问题讨论】:

    标签: mysql laravel laravel-query-builder


    【解决方案1】:

    您可以通过在 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() 将为您做所有事情。
    • 使用数据库; //控制器的顶部,它是完美的。谢谢,让它变成绿色需要几分钟 :D :D :D
    • 使用数据库;或者你可以使用 \DB::select($sql);也..感谢它的laravel的美女兄弟
    【解决方案2】:

    您可以使用查询生成器,因为您可以将原始部分最小化为表大小:

    $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();
    

    【讨论】:

    • 这帮助很大,谢谢!当计数错误时,我用它来获取一个非常大的表的行数。我只是重新表述这个问题,以便在您搜索它时也会显示它;-)
    猜你喜欢
    • 1970-01-01
    • 2022-06-27
    • 2017-04-26
    • 2021-06-24
    • 1970-01-01
    • 2019-11-05
    • 2017-05-25
    • 2020-10-11
    • 2012-10-29
    相关资源
    最近更新 更多