📜  Laravel 检索聚合 (1)

📅  最后修改于: 2023-12-03 15:02:37.613000             🧑  作者: Mango

Laravel 检索聚合

在开发中,检索和聚合数据是非常常见的需求。Laravel 框架为我们提供了方便的检索和聚合数据的方法。

检索数据
DB 类

Laravel 中的 DB 类提供了查询构造器来进行数据库的检索操作。以下是一个简单的例子:

$results = DB::table('users')
                ->select('name', 'email')
                ->where('active', true)
                ->orderBy('last_login', 'desc')
                ->get();

以上代码将从 users 表中检索出所有 active 字段为 true 的用户,并按照 last_login 字段进行倒序排列。

Eloquent ORM

Eloquent 是 Laravel 中的 ORM(对象关系映射),提供了简洁的方法来对数据库进行操作。使用 Eloquent 进行数据检索的方法与使用查询构造器非常相似。以下是一个简单的例子:

$users = App\Models\User::where('active', true)
                        ->orderBy('last_login', 'desc')
                        ->get();

以上代码将从 users 表中检索出所有 active 字段为 true 的用户,并按照 last_login 字段进行倒序排列。

聚合数据

在聚合数据的时候,我们通常需要使用一些聚合函数,比如 SUMAVGCOUNT 等等。Laravel 也为此提供了便捷的方法。

DB 类

使用 DB 类的 selectRaw 方法可以使我们在检索数据的同时进行聚合操作。以下是一个简单的例子:

$total = DB::table('orders')
            ->selectRaw('SUM(total_price) as total')
            ->where('status', 'completed')
            ->first()
            ->total;

以上代码将计算出所有 status 字段为 completed 的订单的总价,并将结果存储在 total 字段中。

Eloquent ORM

使用 Eloquent 进行聚合操作也非常简单。我们可以使用 countavgsum 等方法进行聚合操作。以下是一个简单的例子:

$total = App\Models\Order::where('status', 'completed')
                        ->sum('total_price');

以上代码将计算出所有 status 字段为 completed 的订单的总价。