[英]How to get sum of two different columns with Laravel Query Builder?
我正在嘗試使用 Laravel 查詢構建器獲取兩個不同列的總和,下面的普通 SQL 查詢工作正常,但我無法使用 Laravel 查詢。
SELECT SUM(logins_sun + logins_mon) FROM users_stats WHERE id = 7; // returns: 1034
這是我嘗試過的。
$stats = DB::table('users_stats')->where('id', '=', '7')->sum('logins_sun', '+', 'logins_mon'); // returns: 587.0
這是我的數據庫結構。
+----+------------+------------+
| id | logins_sun | logins_mon |
+----+------------+------------+
| 7 | 587 | 447 |
+----+------------+------------+
它應該返回1034但 Laravel 查詢只返回最后一個值587.0 。
我怎樣才能讓它工作?
sum
是一個聚合函數,只接受一個參數。 它將對列中每一行的值求和。 在您的情況下,查詢僅返回一行,因此總和只是該列的值(傳遞給sum()
的第一個參數)。 可能有一些更好的方法來做到這一點,但我認為您應該能夠使用原始表達式來返回兩列的總和。
$stats = DB::table('users_stats')
->select(DB::raw('logins_sun + logins_mon'))
->where('id', '=', '7');
您可以嘗試使用sum()
方法,例如:
DB::table('users_stats')
->where('id', '7')
->sum(\DB::raw('logins_sun + logins_mon'));
嘗試將回調傳遞給 sum() 並在那里進行添加,例如:
$stats = DB::table('users_stats')->where('id', '=', '7')->sum(function ($row) {
return $row->logins_sun + $row->logins_mon;
});
您可以通過以下方式在 Laravel 中直接運行原始 sql:
$sql = "SELECT SUM(logins_sun + logins_mon) FROM users_stats WHERE id = :ID";
$result = DB::select($sql,['ID'=>7]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.