【问题标题】:Laravel 5: Query Builder creates bad SQL syntaxLaravel 5:查询生成器创建错误的 SQL 语法
【发布时间】:2016-02-04 08:11:52
【问题描述】:

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

【问题讨论】:

    标签: php sql laravel laravel-5 query-builder


    【解决方案1】:

    您可以使用addSelect 方法或selectRaw 方法。 addSelect 方法允许您将选择列“链接”到查询。 selectRaw 方法基本上只允许您向查询添加“原始”选择表达式。

    以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();
    

    【讨论】:

      猜你喜欢
      • 2018-08-03
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多