laravel:tosql函数未正确显示查询

noj0wjuj  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(356)

我正在尝试使用以下代码行在索引屏幕上转储查询:

dd(DB::table('members')->where('name', '=', 'Tycho')->toSql());

现在的问题是,当我在屏幕上显示查询时,我得到以下结果:

"select * from `members` where `name` = ?"

这些代码行的最终目标是保存脱机查询,并在应用程序联机时执行它们。除非有人对此有解决方案,否则我必须将查询保存在数据库中。

3vpjnl9f

3vpjnl9f1#

你看到的是 ? 占位符作为laravel使用准备好的语句。
请参阅ijas ameenudeen对另一个so问题的回答,该问题详细说明了如何添加 toRawSql() 宏,它将用提供给原始查询的绑定替换占位符。

ruarlubt

ruarlubt2#

这是因为您正在使用 toSql 方法,可以使用 getBindings 方法来获取值/绑定。
一行:

$query = DB::table('members')->where('name', '=', 'Tycho')->toSql();
// will give the raw query with bindings.
$sqlWithBindings = str_replace_array('?', $query->getBindings(), $query->toSql());
wh6knrhe

wh6knrhe3#

你可以试试这个:

DB::enableQueryLog();
    DB::table('members')->where('name', '=', 'Tycho')->get();
    echo "<pre>";
    print_r(DB::getQueryLog());

相关问题