Laravel 5:Query Builder创建错误的SQL语法

时间:2015-11-04 00:17:38

标签: php sql laravel laravel-5 query-builder

我正在尝试使用表单的复选框选择来创建动态查询,我正在使用Laravel 5查询构建器,这是我在表单获取后使用toSql()方法获得的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查询?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用addSelect方法或selectRaw方法。 addSelect方法允许您链接"选择查询列。 selectRaw方法基本上只允许您添加" raw"选择表达式到查询。

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();