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