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();
我正在尝试通过使用表单的复选框选择来创建动态查询,我正在使用 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();