2017-09-08 48 views
0

我使用雄辯查詢生成器來爲我生成原始的SQL。我的目標是返回一個SQL查詢這樣有沒有辦法使用查詢構建器在laravel雄辯中顯示值而不是(?)?

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

找到了一個解決方案打印參數值,也許它可以幫助別人有同樣的問題我。

您可以檢查此鏈接: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,我將如何實現這一目標? select * from accounts where id ='120' – Juan

+0

@Juan根據我的研發你不能實現參數值嗎?,所有你得到的參數列表。 – Qazi

+0

有沒有解決它的方法? – Juan