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

时间:2017-09-08 04:30:29

标签: laravel laravel-5 eloquent laravel-eloquent

我正在使用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。任何建议将不胜感激。谢谢!

2 个答案:

答案 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;
}