2015-11-04 196 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();