保存一些数据时如何执行sql?例如,
$user = New User;
$user->name = "test";
$user->mail = "[email protected]";
$user->save();
我不想执行查询。我只想获取查询字符串。(类似于“ INSERT INTO users .....”)
我尝试过$user->toSql();
。但是它给出了“从用户选择*”,这是错误的。
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();
});