如何在Laravel中获取保存查询?

问题描述 投票:0回答:1

保存一些数据时如何执行sql?例如,

 $user = New User;
 $user->name = "test";
 $user->mail = "[email protected]";
 $user->save();

我不想执行查询。我只想获取查询字符串。(类似于“ INSERT INTO users .....”)

我尝试过$user->toSql();。但是它给出了“从用户选择*”,这是错误的。

sql laravel eloquent laravel-5.7
1个回答
0
投票

toSql();用于模型查询构建器。所以这就是为什么当您执行$user->toSql();时会选择全部语句。

您可以在这里做两件事

一个,使用DB::listen

    DB::listen(function ($query) {
        echo $query->sql;
    });
 $user = New User;
 $user->name = "test";
 $user->mail = "[email protected]";
 $user->save();

两个,如果需要更多详细信息,请使用QueryLog。

DB::enableQueryLog();
 $user = New User;
 $user->name = "test";
 $user->mail = "[email protected]";
 $user->save();
dd(DB::getQueryLog());

[如果您不想运行查询,只需将其包装为DB::pretend,就像在迁移时添加--pretend一样,这样就不会迁移DB,您将获得所有sql脚本。


    DB::pretend(function () {
         $user = New User;
         $user->name = "test";
         $user->mail = "[email protected]";
         $user->save();
    });
© www.soinside.com 2019 - 2024. All rights reserved.