我正在尝试使用以下代码行在索引屏幕上转储查询:
dd(DB::table('members')->where('name', '=', 'Tycho')->toSql());
现在的问题是,当我在屏幕上显示查询时,我得到以下结果:
"select * from `members` where `name` = ?"
这些代码行的最终目标是保存脱机查询,并在应用程序联机时执行它们。除非有人对此有解决方案,否则我必须将查询保存在数据库中。
3vpjnl9f1#
你看到的是 ? 占位符作为laravel使用准备好的语句。请参阅ijas ameenudeen对另一个so问题的回答,该问题详细说明了如何添加 toRawSql() 宏,它将用提供给原始查询的绑定替换占位符。
?
toRawSql()
ruarlubt2#
这是因为您正在使用 toSql 方法,可以使用 getBindings 方法来获取值/绑定。一行:
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());
wh6knrhe3#
你可以试试这个:
DB::enableQueryLog(); DB::table('members')->where('name', '=', 'Tycho')->get(); echo "<pre>"; print_r(DB::getQueryLog());
3条答案
按热度按时间3vpjnl9f1#
你看到的是
?
占位符作为laravel使用准备好的语句。请参阅ijas ameenudeen对另一个so问题的回答,该问题详细说明了如何添加
toRawSql()
宏,它将用提供给原始查询的绑定替换占位符。ruarlubt2#
这是因为您正在使用
toSql
方法,可以使用getBindings
方法来获取值/绑定。一行:
wh6knrhe3#
你可以试试这个: