• 运行原生的SQL查询
    • 运行查询语句
      • 使用命名绑定
    • 运行插入语句
    • 运行更新语句
    • 运行删除语句
    • 运行普通语句

    运行原生的SQL查询

    一旦配置好数据库连接后,便可以使用 DB 对象运行查询。 DB 为每种类型的查询提供了方法: select,selectOne,update,insert,delete , cursor, statement, affectingStatement 和 unprepared。

    运行查询语句

    1. $users = DB::select('select * from `user` where `status` = ?', [1]);

    select 方法将始终返回一个数组,数组中的每个结果都是一个 = StdClass 对象,可以像下面这样访问结果值:

    1. foreach ($users as $user) {
    2. echo $user->name;
    3. }

    如果只是查询一条可用 selectOne 结果返回是一个 = StdClass 对象,
    如果没有查询到数据返回是一个空的StdClass 对象。

    1. $sql= 'select * from `user` where `id` = ?';
    2. $res = DB::selectOne($sql, [1]);
    3. if ($res) {
    4. echo $res->name;
    5. }

    如果你最快的方式遍历数据表所有数据 可用使用 DB::cursor($sql) 方法

    1. $sql= 'select * from `user`';
    2. $res = DB::cursor($sql);
    3. foreach($res as $user){
    4. echo $user->name;
    5. }

    为什么说是最快的呢,因为底层采用 yield 机制获取数据 比 chunk 快很多

    使用命名绑定

    除了使用 ? 表示参数绑定外,你也可以使用命名绑定来执行一个查询:

    1. $results = DB::select('select * from `user` where `id` = :id', ['id' => 1]);

    运行插入语句

    可以使用 DB Facade 的 insert 方法来执行 insert 语句。与 select 一样,该方法将原生 SQL 查询作为其第一个参数,并将绑定数据作为第二个参数:

    1. DB::insert('insert into users (`id`, `name`) values (?, ?)', [1, 'sumi']);

    运行更新语句

    update 方法用于更新数据库中现有的记录。该方法返回受该语句影响的行数:

    1. $affected = DB::update('update `user` set `status` = 2 where `name` = ?', ['ovo']);

    运行删除语句

    delete 方法用于从数据库中删除记录。与 update 一样,返回受该语句影响的行数:

    1. $deleted = DB::delete('delete from `users`');

    运行普通语句

    有些数据库语句不会有任何返回值。对于这些语句,你可以使用 DB 的 statement 方法来运行:

    1. DB::statement('drop table `user`');

    有些数据库语句如果你想知道执行是否有成功。对于这些语句,你可以使用 DB 的 unprepared 方法来运行:

    1. $unprepared = DB::unprepared('DROP TRIGGER IF EXISTS `sync_to_item_table`');
    2. if ($unprepared) {
    3. // Todo something...
    4. }