我正在使用Eloquent Query Builder为我生成原始sql。我的目标是返回像这样的SQL查询
select * from accounts where id = '120'
现在我试过
$query = \App\Account::query();
$query = $query->where('id', 120);
dd($query->toSql());
输出:
select * from `accounts` where `id` = ?
有没有办法显示值而不是(?),因为这不是我正在使用的第三方API上的有效查询。 我期待在我给出的第一个例子上产生一个查询。
注意:我不是在查询我的数据库,我将使用该原始查询来传递第三方API。我想要的只是生成一个原始的SQL。任何建议将不胜感激。谢谢!
答案 0 :(得分:0)
是的,您可以使用getBindings()
print_r( $query->getBindings() );
Array ( [0] => instructor [1] => 1 )
答案 1 :(得分:0)
为此找到了一个解决方案,也许它可以帮助那些与我有同样问题的人。
您可以查看以下链接:https://gist.github.com/JesseObrien/7418983
public function getSql()
{
$builder = $this->getBuilder();
$sql = $builder->toSql();
foreach($builder->getBindings() as $binding)
{
$value = is_numeric($binding) ? $binding : "'".$binding."'";
$sql = preg_replace('/\?/', $value, $sql, 1);
}
return $sql;
}