我正在尝试使用表单的复选框选择来创建动态查询,我正在使用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查询?任何帮助将不胜感激。
答案 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();