如何获取 Laravel 中的保存查询?
How to get the save query in Laravel?
如何在保存数据时执行 sql?例如,
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
我不想执行查询。我只想获取查询字符串。(类似于 "INSERT INTO users.....")
我试过了$user->toSql();
。但它给出了 "select * from users" 这是错误的。
toSql();
用于模型查询构建器。所以这就是为什么当你做 $user->toSql();
你得到 select all statement.
你可以在这里做两件事
一个,使用DB::listen
DB::listen(function ($query) {
echo $query->sql;
});
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
二,如果需要更多详细信息,请查询 QueryLog。
DB::enableQueryLog();
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
dd(DB::getQueryLog());
如果你不想运行查询,就用DB::pretend
包裹起来,就像你做迁移时添加--pretend
,这样你就不会迁移DB
您将获得所有 sql
脚本。
DB::pretend(function () {
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
});
如何在保存数据时执行 sql?例如,
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
我不想执行查询。我只想获取查询字符串。(类似于 "INSERT INTO users.....")
我试过了$user->toSql();
。但它给出了 "select * from users" 这是错误的。
toSql();
用于模型查询构建器。所以这就是为什么当你做 $user->toSql();
你得到 select all statement.
你可以在这里做两件事
一个,使用DB::listen
DB::listen(function ($query) {
echo $query->sql;
});
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
二,如果需要更多详细信息,请查询 QueryLog。
DB::enableQueryLog();
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
dd(DB::getQueryLog());
如果你不想运行查询,就用DB::pretend
包裹起来,就像你做迁移时添加--pretend
,这样你就不会迁移DB
您将获得所有 sql
脚本。
DB::pretend(function () {
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
});