2017-09-08 23 views
0

私はEloquent Query Builderを使って私のための生のSQLを生成しています。私の目標は、今私が試したこのlaravel eloquentのクエリビルダーを使って(?)の代わりに値を表示する方法はありますか?

select * from accounts where id = '120' 

のようなSQLクエリを返すことです

$query = \App\Account::query(); 
$query = $query->where('id', 120); 
dd($query->toSql()); 

出力:(?)

select * from `accounts` where `id` = ? 

値の代わりに、理由を表示する方法がありますこれは私が使用しているサードパーティ製APIの有効なクエリではありません。 私は、私が与える最初の例でクエリを生成することを期待しています。

注:私は自分のデータベースを照会していないので、サードパーティのAPIを渡すために生のクエリを使用します。私が望むのは、生のSQLのみを生成することです。どんな提案もありがとうございます。ありがとう!

答えて

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; 
} 
0

はい、あなたはこのための解決策を見つけたgetBindings()

print_r($query->getBindings()); 
Array 
(
    [0] => instructor 
    [1] => 1 
) 
+0

HI @Qaziを、どのように私はこれをachiveでしょうか? select * from accountsここでid = '120' – Juan

+0

私のR&Dごとに@元はあなたは代わりにパラメータ値を達成できませんか?すべて、パラメータリストを取得します。 – Qazi

+0

それには何か回避策がありますか? – Juan

関連する問題