在 laravel lumen 中插入带有变量的 sql 查询

问题描述 投票:0回答:1

我想像这样进行sql查询。但我找不到这段代码的正确语法。

    $sql = "
      SELECT SUM(gross) AS sum
      FROM movies
      ";

    if ($item && $request) {
      $sql .= '
          WHERE :item = :request
        ', [   // syntax error, unexpected token ","

          'item' => $item,
          'request' => $request
        ];
      
    }
sql laravel lumen
1个回答
0
投票

您可以使用

// if you had Movie model use Movie:: instead DB Facades
\Illuminate\Support\Facades\DB::table('movies')
->selectRaw('SUM(gross) as total')
->when($item && $request, function($query) use ($item, $request) {
    // your condition 
    $query->where([
        'item' => $item,
        'request' => $request
    ]);
})
->first(['total'])->total;

更新

我不太清楚为什么你想用 sql 来做到这一点。 以下是sql版本:

$sql = '
    SELECT SUM(gross) AS sum
    FROM posts
';

$bindings = [];
if ($item && $request) {
    $sql .= 'WHERE item = :item AND request = :request ';
    $bindings = [
        'item' => $item,
        'request' => $request,
    ];
}

$result = \Illuminate\Support\Facades\DB::select($sql, $bindings)[0]->sum;    
© www.soinside.com 2019 - 2024. All rights reserved.