Laravel框架学习(查询构建器操作数据库)

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

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

这样我们就获取到了$users表的查询构建器,实际上,底层返回的是Illuminate\Database\Query\Builder的实例,我们对查询构建器的所有操作都是调用该实例对应类上的方法。

1、新增数据

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

DB::table('users')->insert([
            ['id'=>3,'name'=>'test3','email'=>'test3@test.com','password'=>'123'],
            ['id'=>4,'name'=>'test4','email'=>'test4@test.com','password'=>'123'],
            ['id'=>5,'name'=>'test5','email'=>'test5@test.com','password'=>'123']
        ]);

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

$id = DB::table('users')->insertGetId(['id'=>6,'name'=>'test6','email'=>'test6@test.com','password'=>'123']);

2、更新数据

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

$update = DB::table('users')->where('name','test3')->update(['password'=>'123456']);

该方法返回受影响的函数。

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);

输出结果如下

array:3 [▼
  0 => {#225 ▼
    +"id": 1
    +"name": "Laravel"
    +"email": "laravel@test.com"
    +"password": "123"
    +"remember_token": null
    +"created_at": "0000-00-00 00:00:00"
    +"updated_at": "0000-00-00 00:00:00"
  }
  1 => {#226 ▼
    +"id": 2
    +"name": "Academy"
    +"email": "academy@test.com"
    +"password": "123"
    +"remember_token": null
    +"created_at": "0000-00-00 00:00:00"
    +"updated_at": "0000-00-00 00:00:00"
  }
  2 => {#227 ▼
    +"id": 3
    +"name": "test3"
    +"email": "test3@test.com"
    +"password": "123456"
    +"remember_token": null
    +"created_at": "0000-00-00 00:00:00"
    +"updated_at": "0000-00-00 00:00:00"
  }
]

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

$users = DB::table('users')->select('name','email')->get();
dd($users);
array:3 [▼
  0 => {#225 ▼
    +"name": "Laravel"
    +"email": "laravel@test.com"
  }
  1 => {#226 ▼
    +"name": "Academy"
    +"email": "academy@test.com"
  }
  2 => {#227 ▼
    +"name": "test3"
    +"email": "test3@test.com"
  }
]

4.2 获取单条记录

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

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

返回结果是个一维数组

{#225 ▼
  +"id": 3
  +"name": "test3"
  +"email": "test3@test.com"
  +"password": "123456"
  +"remember_token": null
  +"created_at": "0000-00-00 00:00:00"
  +"updated_at": "0000-00-00 00:00:00"
}

4.3 分组块获取数据

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

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

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

4.4 获取单列的值

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

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

对应的输出为:

array:3 [▼
  0 => "Laravel"
  1 => "Academy"
  2 => "test3"
]

4.5 原生表达式

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

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

对应输出为:

array:2 [▼
  0 => {#226 ▼
    +"name": "Laravel"
    +"email": "laravel@test.com"
  }
  1 => {#227 ▼
    +"name": "Academy"
    +"email": "academy@test.com"
  }
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值