Laravel 5:查询生成器创建错误的 SQL 语法

Laravel 5: Query Builder creates bad SQL syntax

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

您可以使用addSelect方法或selectRaw方法。 addSelect 方法允许您对 "chain" select 列进行查询。 selectRaw 方法基本上只允许您向查询添加 "raw" select 表达式。

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