Php Laravel 5:查询生成器创建了错误的SQL语法
我正在尝试使用表单的复选框选择创建一个动态查询,我正在使用Laravel 5 query builder,下面是我在处理表单时使用Php Laravel 5:查询生成器创建了错误的SQL语法,php,sql,laravel,laravel-5,query-builder,Php,Sql,Laravel,Laravel 5,Query Builder,我正在尝试使用表单的复选框选择创建一个动态查询,我正在使用Laravel 5 query builder,下面是我在处理表单时使用toSql()方法得到的SQL select `v`.`id ,v`.`model` from `vehicles` as `v` 问题是查询会导致SQL语法错误,因为它缺少一些引号。下面是我如何创建查询的 $query = 'v.id'; if ($model == 1) { $query .= ' ,v.model'; } if ($marka ==
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查询?任何帮助都将不胜感激。您可以使用
addSelect
方法或selectRaw
方法。addSelect
方法允许您将select列“链接”到查询。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();
使用选择raw
的示例:
$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();