laravel db类

    技术2022-07-10  101

    2.1、laravel支持的数据库类型

    MySQL

    Pgsql

    SQLite

    SQL Server

    laravel操作数据库所使用的扩展 pdo,一定要开启pdo扩展

    2.2、配置连接数据库信息

    在laravel中修改连接数据库的文件有两处

    修改 .env文件修改config/database.php文件。

    laravel5.4之后对我们的数据库的编码就进行了默认改变,默认使用 utf8mb4

    创建数据库

    修改.env文件来连接数据库

    到此我们的数据库的配置就完成了

    注:表前缀,如果有则添加,没有可以不修改。

    检查是否配置好

    2.3、DB类执行原生SQL语句 

    // 添加操作 $ret = DB::insert('insert into test_member (name,age,email) values (:name,:age,:email)', [':name'=>'张三',':age'=>20,':email'=>'admin@admin.com']); // 修改操作 $ret = DB::update('update test_member set age=:age where id=:id', [':age' => 12, ':id' => 1]); // 查询 select # 查询单条 $ret = DB::selectOne("select * from web64_user where id=:id",[':id'=>$id]); # 查询多条 $ret = DB::select("select * from web64_user"); // 删除操作 $ret = DB::delete("delete from test_member where id=:id",[':id'=>1]); —————————————————————————————————————————————————————————————————————————————————————— public function db(){ // 添加 /*$sql = 'insert into la_users (username,password) values(:username,:password)'; # 返回true/false // $ret = DB::insert($sql,[':username'=>'admin',':password'=>'admin888']); $ret = DB::insert($sql,['username'=>'admin1','password'=>'admin8881']);*/ // 修改 /*$sql = "update la_users set username=:username where id=:id"; # 返回影响行数 $ret =DB::update($sql,['username'=>'张三','id'=>1]); dd($ret);*/ // 查询单条 /*$sql = "select * from la_users where id=:id"; # 返回一个集合对象 $ret = DB::selectOne($sql,['id'=>1]); dump($ret);*/ // 查询多条 /*$sql = "select * from la_users"; # 返回一个数组的集合 $ret = DB::select($sql); dump($ret);*/ // 删除 $sql = "delete from la_users where id=:id"; # 返回影响行数 $ret = DB::delete($sql,['id'=>1]); dd($ret); }

    定义路由

    创建控制器

    php artisan make:controller MydbController

    数据表

    控制器

     

    2.4、DB构建器操作数据库

    2.4.1、查询(get/first)

    table(表名),这里的表名,如查有前缀不用写。 # 查询多条 get all # all不可以接where条件 // 查询所有无条件 $data = DB::table('user')->get(); // 默认 [‘*’] // 查询所有,并指定字段 推荐使第一种方式 $data = DB::table('user')->get(['name','age']); // 获取ID大于5的数据 $ret = DB::table('member')->where('id','>=',5)->get(); // when 来进行条件的搜索 $kw = $request->get('kw','user'); // when 字段 如果为真则执行匿名函数中的操作 $ret = DB::table('users')->when($kw,function (Builder $query) use ($kw){ $query->where('username','like',"%{$kw}%"); })->get(); # 查询单条记录 $ret = DB::table('member')->where('id', 5)->first(); # 获取某个具体的值 $ret = DB::table('member')->where('id',5)->value('name'); # 获取一列数据 $ret = DB::table('member')->pluck('name'); # 以ID为下标 name为值 $ret = DB::table('member')->pluck('name', 'id'); # 排序操作 $ret = DB::table('member')->orderBy('id','desc')->get(); # 查询总记录数 echo DB::table('member')->count(); # 分页获取数据 $ret = DB::table('member')->orderBy('id','desc')->offset(0)->limit(2)->get(); limit:表示限制输出的条数 offset:从什么地方开始,起始从0开始 $ret = DB::table('users')->whereIn('id',[2,3,5])->get(); $ret = DB::table('users')->whereBetween('id',[3,5])->get(); __________________________________________________________________ // db构建器 public function db2(Request $request){ # 查询所有 // $ret = DB::table('users')->get(); # 获取所有 只要一个字段 // $ret = DB::table('users')->get(['username']); # 查询id大于等于3的记录 // $ret = DB::table('users')->where('id','>=','3')->get(); # id 大于等于 3 或者username=admin1 // $ret = DB::table('users')->where('id','>=',3)->orWhere('username','admin1')->get(); # 根据用户名查找 // $kw = $request->get('kw','adm'); // when 字段 如果为真 就执行匿名函数 /*$ret = DB::table('users')->when($kw,function(Builder $query) use ($kw){ $query->where('username','like',"%{$kw}%"); })->get();*/ /*$ret = DB::table('users')->where(function (Builder $query) use ($kw){ $query->where('username','like',"%{$kw}%"); })->get();*/ #id为3 // $ret = DB::table('users')->where('id',3)->first(); # 获取id为的用户名 // $ret = DB::table('users')->where('id',3)->value('username'); # 获取用户名这一列的数据 // $ret = DB::table('users')->pluck('username','id'); # 获取总数 #$ret = DB::table('users')->where('id','>',2)->count(); # 排序 // $ret = DB::table('users')->orderBy('id','desc')->get(); #分页 // $ret = DB::table('users')->orderBy('id','desc')->offset(0)->limit(2)->get(); // $ret = DB::table('users')->whereIn('id',[2,3,4])->get(); // $ret = DB::table('users')->whereBetween('id',[2,4])->get(); // 添加数据 $table = DB::table('users'); /*$ret = $table->insert([ 'username'=>'admin12', 'password'=>'fusk' ]);*/ // 添加多条 /*$data = []; for ($i=6;$i<10;$i++): $data[] = [ 'username'=>'user'.$i, 'password'=>'user'.$i, ]; endfor; $ret = $table->insert($data);*/ // 添加单条并返回插入时候的id /*$ret = $table->insertGetId([ 'username'=>'user10', 'password'=>'user10' ]);*/ // 修改 /*$ret = $table->where('id',10)->update([ 'username'=>'user111', 'password'=>'user111' ]);*/ // 删除 $ret = $table->delete(10); dump($ret); }

    定义路由

    控制器

    2.4.2、添加数据操作(insert/ insertGetId)

    对数据库中的某个表增加数据主要有两个方法可以实现,分别是insert()insertGetId()

    insert() 可以同时添加一条或多条,返回值是布尔类型。 insertGetId() 只能添加一条数据,返回自增的id。 // 添加数据 $ret = DB::table('member')->insert([ 'name' => '张三丰', 'age' => 50, 'email' => 'ee@ee.com' ]); // 添加数据并得到插入时的ID值 $id = DB::table('member')->insertGetId([ 'name' => '小华', 'age' => 60, 'email' => 'ff@ff.com' ]); // 添加多条记录 $ret = DB::table('member')->insert([ ['name'=>'AAAA','age'=>20,'email'=>'111@111.com'], ['name'=>'BBBB','age'=>30,'email'=>'222@222.com'], ]);

    2.4.3、修改数据(update)

    $ret = DB::table('member')->where('id', 2)->update([ 'name' => '修改一下', 'age' => 50 ]);

    2.4.4、删除数据(delete)

    // 删除数据

    $ret = DB::table('member')->where('id',2)->delete();

     

    Processed: 0.017, SQL: 9