Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5:查询生成器创建了错误的SQL语法_Php_Sql_Laravel_Laravel 5_Query Builder - Fatal编程技术网

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

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 ==

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