如何用dd或dump获取到查询构造器生成的sql语句

jnmcok

在控制器中用
Db::table('part')->where('id','>',6)->get()->dump();
只是在控制台输出了获取到的数据,并未看到SQL语句的输出

1575 2 1
2个回答

recode

事情是这样的。今天,我调试代码时,想输出sql语句,但不知道怎样输出。
然后,我忽然想到一个,超级变态的方法。

你在
Db::table('part')->where('id','>',6)->get()
加上一个不存在的查询
Db::table('part')->where('id','>',6)->where(['aaaaaaa' => 1])->get()

好了。现在。你访问url,webman就会给你打印一个错误。这里面包含了SQL语句。

  • 咸鱼.php 2022-05-03

    够变态

  • jnmcok 2022-05-03

    确实变态,难道只能变态吗?没有正道吗?

  • jnmcok 2022-05-03

    说明文档中明明写着可用dd或dump获取sql,是我不会用,还是其他原因?

  • yzh52521 2022-05-03

    安装上 "symfony/var-dumper" 这个依赖就可以了

  • jnmcok 2022-05-03

    安装过var-dumper了,"symfony/var-dumper": "^5.4",就是没有输出

  • jnmcok 2022-05-03

    结贴:仔细看了一下帮助文档,想查看构建的SQL语句时,不可以带get()这种有执行查询动作的,要直接跟dd或dump

ersic

别直接打印,转成 sql 返回就行了

$sql = Db::table('part')->where('id','>',6)->toSql();
echo $sql;
  • jnmcok 2022-05-03

    没有toSql()这个方法

  • ersic 2022-05-04

    有的,我测试了,你看好,不是 get() 方法后调用,where 条件后。

  • jnmcok 2022-05-04

    多谢教诲,感谢

年代过于久远,无法发表回答
🔝