有没有办法在 laravel eloquent 中使用查询构建器来显示值而不是 (?)?

Is there a way to display the value instead of (?) using query builder in laravel eloquent?

我正在使用 Eloquent 查询生成器为我生成原始 sql。我的目标是 return 一个 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 的有效查询。 我希望对我给出的第一个示例进行查询。

注意:我没有查询我的数据库,我将使用该原始查询传递给第 3 方 API。我只想生产一个原始的 sql。任何建议将不胜感激。谢谢!

是的,您可以使用 getBindings()

打印参数值
print_r( $query->getBindings() );
Array
(
    [0] => instructor
    [1] => 1
)

找到了解决办法,也许对和我有同样问题的人有帮助。

你可以检查这个link: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;
}