有没有办法在 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;
}
我正在使用 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;
}