2015-11-04 104 views
0

我試圖用一種形式的複選框選項來創建一個動態查詢,我使用Laravel 5查詢構建器和這裏是我得到通過toSql()方法後,我的SQL表單處理完成後才能得到它。Laravel 5:查詢生成器生成不良的SQL語法

select `v`.`id ,v`.`model` from `vehicles` as `v` 

問題是查詢導致SQL語法錯誤,因爲它缺少一些引號。以下是我如何創建查詢

$query = 'v.id'; 

if ($model == 1) { 
    $query .= ' ,v.model'; 
} 

if ($marka == 1) { 
    $query .= ' ,v.brand_name'; 
} 

$query_result = DB::table('vehicles AS v')->select($query)->toSql(); 

如何創建正確的SQL查詢?任何幫助,將不勝感激。

回答

0

可以使用addSelect方法或selectRaw方法。 addSelect方法允許您將選擇的列鏈接到查詢。 selectRaw方法基本上只允許您爲查詢添加一個「原始」選擇表達式。

實施例與addSelect

$query = DB::table('vehicles AS v'); 

if ($model == 1) { 
    $query->addSelect('v.model'); 
} 

if ($marka == 1) { 
    $query->addSelect('v.brand_name'); 
} 

$query_result = query->get(); 

實施例與selectRaw

$query = 'v.id'; 

if ($model == 1) { 
    $query .= ' ,v.model'; 
} 

if ($marka == 1) { 
    $query .= ' ,v.brand_name'; 
} 

$query_result = DB::table('vehicles AS v')->selectRaw($query)->get();