mail = "test@example.com"; $use-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:42:21 25 4
gpt4 key购买 nike

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

 $user = New User;
$user->name = "test";
$user->mail = "test@example.com";
$user->save();

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

我试过 $user->toSql();。但它给出了错误的“select * from users”。

最佳答案

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

两个,如果您需要更多详细信息,请使用 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 - 如何在 Laravel 中获取保存查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61181520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com