在线教育案例Laravel当中的DB类操作数据库

Posted 黑马程序员官方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在线教育案例Laravel当中的DB类操作数据库相关的知识,希望对你有一定的参考价值。

按照MVC 的架构,对数据的操作应该放在 Model 中完成,但如果不使用Model,我们也可以用 laravel框架提供的 DB 类操作数据库。而且,对于某些极其复杂的sql,用Model 已经很难完成,需要开发者自己手写sql语句,使用 DB 类去执行原生sql。 laravel 中 DB 类的基本用法DB::table('tableName') 获取操作tableName表的实例。

1、数据表的创建与配置

(1)创建数据库和表

create table member(
    id int primary key auto_increment,
    name varchar(32) not null,
    age tinyint unsigned not null,
email varchar(32) not null
)engine myisam charset utf8;

 

(2)数据库在laravel框架中的配置

在.env文件里面,

 

也可以在config目录下面的database.php文件里面配置,使用env函数,表示先从env文件里面获取,如果获取成功则使用,如果获取失败,则使用env函数的第二个参数。

 

注意:如果是php artisan serve方式启动的,修改了配置文件,则需要重新启动,才能读取修改后的配置文件;

 

(3)创建一个MemberController.php的控制器,可以使用命令来完成;

语法:

> php artisan make:controller  MemberController

现在代表需要在app\\Http\\Controllers这个目录创建MemberController.php

 

创建的控制器如下;

注意:要使用DB类,必须在控制器中,引入DB类即可

 

(4)计路由规则

Route::get('member/add','MemberController@add')

 

2、增加信息(insert)

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

insert()可以同时添加一条或多条,返回值是布尔类型。

insertGetId(),只能添加一条数据,返回自增的id。

注意:DB::table('无前缀的表名')

向member表,同时添加多条数据,返回值是布尔值

 

 

 

3、修改数据( update)

数据修改可以使用update()、increment()和decrement()函数来实现。

案例:把id=1的名称,改名为‘小倩’

->where()->update([])

 

->where('id',1)表示条件是id=1,

案例:把id=1的用户年龄字段值加10;

DB::table('users')->where('id',1)->increment('age',10);

 

DB::table('users')->increment('votes');

DB::table('users')->increment('votes', 5);

DB::table('users')->decrement('votes');

DB::table('users')->decrement('votes', 5);

4、查询数据(get)

(1)取出基本数据

案例1:获取member表中所有的数据

DB::table('member')->get(); //返回值是一个集合对象(多条记录形成的对象集合)

 //select * from member;

 

遍历时,要以对象的方式输出数据;

 

案例2:获取id<3的数据

$data = DB::table('member')->where('id','<',3)->get();//

(2)取出单行数据(一条记录)

DB::table('member')->where('id','1')->first();//返回值是一个对象(当前行数据形成的一个对象)

 

(3)获取某个具体的值

DB::table('member')->where('id','1')->value('name')//返回值就是满足条件的name值。

 

(4)获取某些字段数据

$users = DB::table('users')->select('name', 'email')->get();
$users = DB::table('users')->distinct()->get();
$users = DB::table('users')->select('name as user_name')->get();

 

(4)排序操作

DB::table('member')->orderBy('age','desc')->get();

 

(5)分页操作

从第2行显示到第4行;

DB::table('member')->limit(3)->offset(1)->get();

 

5、删除数据(delete)

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

DB::table('table_name')->where('id','1')->delete();

案例:删除id=2的数据

DB::table('table_name')->where('id','2')->delete();

案例:删除id<3的数据

DB::table('table_name')->where('id','<','3')->delete();

 

6、执行任意的SQL语句

(1)执行任意的insert update delete语句

DB::statement(insert into member values(null,’’));

 

(2)执行任意的select语句

$res = DB::select("select * from member");

var_dump($res);

 

以上是关于在线教育案例Laravel当中的DB类操作数据库的主要内容,如果未能解决你的问题,请参考以下文章

laravel 控制器类DB类操作

laravel DB 类库

laravel 控制器中使用 try catch

laravel自定义分页的实现案例offset()和limit()

laravel数据库操作

Laravel5.1 数据库--DB运行原生SQL