Nab*_*han 1 sql laravel eloquent laravel-5.7
当我保存一些数据时,如何让sql执行?例如,
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
Run Code Online (Sandbox Code Playgroud)
我不想执行查询。我只想获取查询字符串。(类似于“INSERT INTO 用户.....”)
我试过了$user->toSql();。但它给出了“从用户中选择*”,这是错误的。
toSql();用于模型查询构建器。所以这就是为什么当$user->toSql();你得到 select all 语句时。
你可以在这里做两件事
一、使用 DB::listen
DB::listen(function ($query) {
echo $query->sql;
});
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
Run Code Online (Sandbox Code Playgroud)
二、QueryLog 如果你需要更多的细节。
DB::enableQueryLog();
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
dd(DB::getQueryLog());
Run Code Online (Sandbox Code Playgroud)
如果您不想运行查询,只需DB::pretend像执行迁移添加时一样将其包装起来--pretend,这样您就不会迁移DB您将获得所有sql脚本。
DB::pretend(function () {
$user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |