如何在 Laravel 的流畅查询构建器中选择计数?
Laravel 中的流畅查询构建器是一个接口,负责创建和运行数据库查询。查询构建器可以很好地与 Laravel 支持的所有数据库一起使用,并且可以用于在其上执行几乎所有数据库操作。
使用流畅查询构建器的优势在于它具有防止 SQL 注入攻击的保护机制。它使用 PDO 参数绑定,您可以自由发送所需的字符串。
流畅查询构建器支持许多方法,例如count、min、max、avg、sum,这些方法可以从您的表中获取聚合值。
现在让我们看一下如何使用流畅查询构建器在 select 查询中获取计数。要使用流畅查询构建器,请使用如下所示的 DB facade 类
use Illuminate\Support\Facades\DB;
现在让我们检查一些示例以在 select 查询中获取计数。假设我们已经创建了一个名为 students 的表,使用以下查询
CREATE TABLE students( id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(15) NOT NULL, email VARCHAR(20) NOT NULL, created_at VARCHAR(27), updated_at VARCHAR(27), address VARCHAR(30) NOT NULL );
并按如下所示填充它:
+----+---------------+------------------+-----------------------------+-----------------------------+---------+ | id | name | email | created_at | updated_at | address | +----+---------------+------------------+-----------------------------+-----------------------------+---------+ | 1 | Siya Khan | [email protected] | 2022-05-01T13:45:55.000000Z | 2022-05-01T13:45:55.000000Z | Xyz | | 2 | Rehan Khan | [email protected] | 2022-05-01T13:49:50.000000Z | 2022-05-01T13:49:50.000000Z | Xyz | | 3 | Rehan Khan | [email protected] | NULL | NULL | testing | | 4 | Rehan | [email protected] | NULL | NULL | abcd | +----+---------------+------------------+-----------------------------+-----------------------------+---------+
表中的记录数为 4。
示例 1
在下面的示例中,我们在 DB::table 中使用 students。count() 方法负责返回表中存在的总记录数。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class StudentController extends Controller{ public function index() { $count = DB::table('students')->count(); echo "The count of students table is :".$count; } }
输出
上述示例的输出为:
The count of students table is :4
示例 2
在这个例子中,我们将使用selectRaw()来获取表中存在的总记录数。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class StudentController extends Controller { public function index() { $count = DB::table('students')->selectRaw('count(id) as cnt')->pluck('cnt'); echo "The count of students table is :".$count; } }
列 id 用于selectRaw()方法中的count()中,并使用 pluck 获取计数。
输出
上述代码的输出为:
The count of students table is :[4]
示例 3
此示例将使用selectRaw()方法。假设您想计算名称,例如Rehan Khan。让我们看看如何将 selectRaw() 与count()方法一起使用
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class StudentController extends Controller { public function index() { $count = DB::table('students')-> where('name', 'Rehan Khan')-> selectRaw('count(id) as cnt')->pluck('cnt'); echo "The count of name:Rehan Khan in students table is :".$count; } }
在上面的示例中,我们想要查找表:students中名称为Rehan Khan的计数。因此,编写的查询为。
DB::table('students')->where('name', 'Rehan Khan')->selectRaw('count(id) as cnt')->pluck('cnt');
我们使用了 selectRaw() 方法,该方法负责计算来自 where 过滤器的记录。最后,pluck() 方法用于获取计数值。
输出
上述代码的输出为:
The count of name:Rehan Khan in students table is :[2]
示例 4
如果您计划使用count()方法来检查表中是否存在任何记录,则可以使用 exists() 或doesntExist()方法作为替代,如下所示:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class StudentController extends Controller{ public function index() { if (DB::table('students')->where('name', 'Rehan Khan')->exists()) { echo "Record with name Rehan Khan Exists in the table :students"; } } }
输出
上述代码的输出为:
Record with name Rehan Khan Exists in the table :students
示例 5
使用doesntExist()方法检查给定表中是否存在任何记录。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class StudentController extends Controller{ public function index() { if (DB::table('students')->where('name', 'Neha Khan')->doesntExist()) { echo "Record with name Rehan Khan Does not Exists in the table :students"; } else { echo "Record with name Rehan Khan Exists in the table :students"; } } }
输出
上述代码的输出为:
Record with name Rehan Khan Does not Exists in the table :students