db类操作数据库

db类操作数据库

增删改查+循环+判断

按照MVC的架构.对数据的澡作应该放在Model中完成.但如果不使用Model,我们也可以用laravel框架提供的DB类操作数据库·而且,对于某些极其复杂的sql,用Model已经很难完成.遥绷趁逮直查结获迈胡·使用旦DO类去执行原生纽·经rave!中DO类的基本用法DB::table['tablename']获取操作tablename表的实例.

数据表的创建与配置

创建数据库的方式

​ 1.sql语句
​ 2.图形界面

###建立数据表和测试表:
配置连接:

1…env文件配置mysql信息,
2.在config文件夹下database文件中进行配置,使用env函数,表示先从env文件中获取,如果获取成功就使用,如果失败就使用env函数的第二个参数,在做项目时建议关闭strict,utf8mb4超集

注意:如果是PHP artisan server启动的,修改了配置文件必须重新启用

在Test控制器引入db门面

use DB(DB门面已经在app.php文件中已经定义好了别名)

定义增删改查需要的路由

增加:/home/add
删除:/home/del
修改:/home/update
查询:/home/select

增加信息(insert)

对数据库添加操作者注意有两个函数可以实现,分别是insert和insertGetld()

insert(数组)可以同时添加一条或多条,返回值是布尔类型
insertGetld(一维数组),只能添加一条数据,返回自增的id

注意:DB::table(‘前缀的表名’)->insert();连贯操作或者叫链式操作

实例:向member添加多条数据

路由设置:

Route::group(['prefix'=>'home'],function (){ Route::get('add','Home\TestController@add'); Route::get('del','Home\TestController@del'); Route::get('update','Home\TestController@update'); Route::get('select','Home\TestController@select'); });

控制器函数设置(增加):

public function add(){ //定义关联操作的数据表 $db=DB::table('member'); //使用insert增加记录 $rst=db->insert([ [ 'name'=>'张三', 'age'=>'18', 'email'=>'zhangsan@qq.com' ], [ 'name'=>'李四', 'age'=>'19', 'email'=>'李四@qq.com' ] ]); dd($rst); }

使用insertGetId函数,添加一条记录,返回插入数据的id

rst=db->insertGetId([ 'name'=>'马冬梅', 'age'=>'18', 'email'=>'madong@qq.cm' ]); dd($rst);
修改信息(update)


数据修改可以使用update()、increment()、decrement()函数来实现
Update()表示可以修改整个记录中的全部字段;
increment和decrement表示修改数组字段的数值(递增或者递减,有局限性),典型应用(登录次数的递增、积分的增加);

补充:
在laravel中如果想友好的打印内容,可以使用dd方法
语法:dd(打印内容);[dump+die]

案例演示:把id=1的名称更改为"张三丰"
语法:

where->update([])返回值为收到影响的行数
where语法:
->where(字段,运算符,值)如果运算符为=号,中间运算符可以省略。

实现代码:

public function update(){ db=DB::table('member'); //修改id=1的用户名字更改为张三丰 $rst=$db->where('id','=','2')->update([ 'name'=>'张三丰' ]); dd($rst);//返回值为影响的行数 }

案例:用户年龄自增

DB::table[‘member’]->increment(‘votes’);自增1
DB::table[‘member’]->increment(‘votes’,5);自增5
DB::table[‘member’]->decrement(‘votes’);减1
DB::table[‘member’]->decrement(‘votes’,5);减5

查询数据(get):

取出多条数据

注意:1.查询出来的数据是一个对象
2.注意where方法之后继续调用where方法
->where()->where->where()… 这个语法是并且(and)关系语法
->where()->orwhere()->orwhere()… 这个语法是或者关系语法
orwhere()和where()一致

案例1:获取数据表中的所有数据
DB::table[‘member’]->get();返回值是一个结果集 Collection

db=DB::table('member'); $data=$db->get(); dd($data);

它是使用对象的方式来输出,而并非是数组,输出变量,必须使用对象的方式来输出:

foreach (data as $key =>$value){ echo "id是:{$value->id}.名字是:{$value->name}.邮箱是:{$value->email}<br/>"; }

案例2:查询id>3的数据

$data=$db->where('id','>','3')->get();

案例3:查询id>3,并且age<21,使用orwhere相同的部分会重合

$data=$db->where('id','>','2')->where('age','<','21')->get();

取出单条数据

DB::table(‘member’)->where(‘id’,‘1’)->first();//返回值是一个对象
等价于limit 1

案例:取出id=2的一条数据

$data=$db->where('id','2')->first(); echo "id是:{$data->id}.名字是:{$data->name}.邮箱是:{$data->email}<br/>";

###获取某个具体的值

DB::table(‘member’)->where(‘id’,‘1’)->value(‘name’);

案例:id为2的name的值

$data=$db->where('id','2')->value('name'); echo "名字是:{$data}<br/>";

获取某些字段数据(多个字段)

DB::table(‘member’)->select(‘name’,'email)->get();
DB::table(‘member’)->select(‘name as user_name’,'email)->get();//取别名

案例:查询一些指定字段的值

$data=DB::table('member')->select('name','email')->get(); dd($data);

排序操作:

DB::table(‘member’)->orderBy(‘age’,‘desc’)->get();//升序Asc 降序Desc

案例:按照指定的字段进行特定规则排序

data=DB::table('member')->orderBy('age','desc')->get(); dd($data);

分页排序

$data=DB::table(‘member’)->limit(3)->offset(2)->get();
limit表示限制输出的条数
offset:从什么地方开始

组合起来就等于limit5,5(从第六条开始走5条)

案例:分页操作

data=DB::table('member')->limit(1)->offset(2)->get(); dd($data);
删除操作(delete)[了解]


在删除中有两种删除:物理删除(本质是删除)和逻辑删除(本质是修改,重点)

数据删除可以通过delete函数和truncate函数实现。

Delect表示删除记录
Truncate表示清空整个数据表

DB::table(‘member’)->where(‘id’,‘1’)->delete();//返回受影响的行数

案例:删除id=1的数据

data=DB::table('member')->where('id','1')->delete(); dd($data);

执行任意的sql语句(了解)

执行任意的insert update delete语句(影响记录的语句使用statement语法)

DB::statement(“insert into member value(null,’’)”);

执行任意的select语句(不影响记录的语句使用select语法)

DB::select(“select * from member”);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值