larveral|Laravel查询构建器对数据库增删改查的例子

更新时间:2020-09-22    来源:php与数据库    手机版     字体:

【www.bbyears.com--php与数据库】

获取查询构建器很简单,还是要依赖DB门面,我们使用DB门面的table方法,传入表名,即可获取该表的查询构建器:

$users = DB::table("users");

这样我们就获取到了$users表的查询构建器,实际上,底层返回的是Illuminate\Database\Query\Builder的实例,我们对查询构建器的所有操作都是调用该实例对应类上的方法。下面我们就列举查询构建器的一些常用方法,我们还是沿用上一节创建的$users表做演示说明 。

1、新增数据

使用查询构建器的insert方法即可插入一条/多条数据:

DB::table("users")->insert([
    ["id"=>1,"name"=>"Laravel","email"=>"laravel@test.com","password"=>"123"],
    ["id"=>2,"name"=>"Academy","email"=>"academy@test.com","password"=>"123"],
    ["id"=>3,"name"=>"LaravelAcademy","email"=>"laravel-academy@test.com","password"=>"123"]
]);

执行成功后即可在数据表$users中插入三条记录。有时候,我们需要插入记录后获取自增ID,可以使用insertGetId方法:

$insertId = DB::table("users")->insertGetId(
    ["name"=>"Laravel-Academy","email"=>"laravelacademy@test.com","password"=>"456"]
);

2、更新数据


更新表记录很简单,使用查询构建器的update方法即可:

$affected = DB::table("users")->where("name","Laravel-Academy")->update(["password"=>"123"]);
该方法返回受影响的函数。

3、删除数据

使用delete方法删除表记录,删除方法和更新方法类似,返回被删除的行数:

$deleted = DB::table("users")->where("id", ">", 3)->delete();

如果我们是要删除整个数据表数据,则略去where条件,如果是要清空数据表还要将自增ID置为0,可以使用truncate方法:

DB::table("users")->truncate();

4、基本查询

4.1 获取所有表记录

使用get方法即可获取一张表的所有记录:

$users = DB::table("users")->get();
dd($users);

 

如果是获取指定列的数据,则需要加上select条件:

$users = DB::table("users")->select("name","email")->get();
dd($users);

 

4.2 获取单条记录

获取单条记录需要在查询基础上加上first方法:

$user = DB::table("users")->where("name","Laravel")->first();
dd($user);

 

4.3 分组块获取数据

如果数据库包含多条数据,则一次性获取会极大影响性能,对应地,我们可以调用chunk方法分组块获取数据:

DB::table("users")->chunk(2,function($users){
    foreach($users as $user){
        // if($user->name=="LaravelAcademy")
            // return false;
        echo $user->name."
";
    }
});

这里我们指定每次取两条记录。注释部分的意思是我们可以设定查询退出条件,当达到该条件时,查询退出,不再往下执行。

4.4 获取单列的值

上述方法获取的查询结果都是对象实例/对象实例数组,有时候,我们只是想简单获取单列的值,遍历数组获取指定列的值太麻烦,可以使用lists方法获取列值数组:

$users = DB::table("users")->lists("name");
dd($users);

 

这样我们就可以免去遍历对象数组的麻烦。

4.5 原生表达式

此外,查询构建器还支持原生表达式,我们需要调用DB门面的raw方法来实现:

$users = DB::table("users")->select(DB::raw("name,email"))->where("id","<",3)->get();
dd($users);

如何使用查询构建器实现对数据库的高级查询?比如join、union、添加自定义where条件、排序、分组、分页后面会有介绍。

本文来源:http://www.bbyears.com/jiaocheng/100163.html