我想像这样进行sql查询。但我找不到这段代码的正确语法。
$sql = "
SELECT SUM(gross) AS sum
FROM movies
";
if ($item && $request) {
$sql .= '
WHERE :item = :request
', [ // syntax error, unexpected token ","
'item' => $item,
'request' => $request
];
}
您可以使用当
// 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;