Laravel之DB类操作数据库(创建表、添加字段、创建控制器、添加数据、修改数据、删除数据、显示查询数据、返回ID的方法getId)
程序员文章站
2022-05-31 18:39:17
...
1、创建一张表(迁移文件)
在命令提示符中输入php artisan make:migration create_table_msgs --create=msgs命令
C:\wamp64\www\weibo>php artisan make:migration create_table_msgs --create=msgs
2、添加字段,找到database->migrations->下的迁移文件进行添加
public function up()
{
Schema::create('msgs', function (Blueprint $table) {
$table->increments('id');
$table->string('title',40);
$table->text('content');
$table->integer('stu');
$table->timestamps();
});
}
然后输入命令C:\wamp64\www\weibo>php artisan migrate
3、创建控制器,Http->Controllers->
创建一个名为MsgController的控制器
在命令提示符中输入C:\wamp64\www\weibo>php artisan make:controller MsgController
4、路由响应方法
找到routes->web.php文件,输入
use DB;引入类
Route::get('msg/insert','aaa@qq.com');
Route::get('msg/edit','aaa@qq.com');
Route::get('msg/show','aaa@qq.com');
Route::get('msg/del','aaa@qq.com');
//返回ID的方法getId
Route::get('msg/getId','aaa@qq.com');
5、在控制器中输入方法、添加数据、返回ID的方法getId
1、添加数据
public function insert(){
$data = ['title'=>'Laravel DB Test','content'=>'方便使用sql查询','stu'=>'13'];
或者
$data = array(
array('title'=>'测试1','content'=>'测试1','stu'=>15),
array('title'=>'测试2','content'=>'测试2','stu'=>16),
);
DB::table('msgs')->insert($data);//msgs表名
}
2、修改数据、increment增加,decrement减少
//修改数据
public function edit(){
DB::table('msg')->where('id',1)->update(['title'=>'DB类之修改']);
DB::table('users')->where('id',1)->increment('age');//默认步长为1
DB::table('users')->where('id',2)->increment('age', 3); //第二个参数,指定步长
DB::table('users')->where('id',3)->decrement('age');
DB::table('users')->where('id',4)->decrement('age', 3)
}
3、删除数据
public function del(){
DB::table('msgs')->where('id',1)->delete();
DB::table('msgs')->truncate();//清空表,删除所有行,并重置自动递增ID为零
}
4、显示查询数据
//显示查询数据
public function show(){
$res = DB::table('msgs')->get();
$res = DB::table('msgs')->where('id','>',3)->get();
$res = DB::table('msgs')->select('title')->get();//只查询单独的列
$res = DB::table('msgs')->where('id','>',3)->first();//只查询单独行
$res = DB::table('msgs')->where('id',3)->value('title');//只查询value值
$res = DB::table('msgs')->pluck('title');//pluck方法获取一列的单个数据,结果为数组
foreach($res as $k => $v){
dump($v);
}
$res = DB::select('select * from msgs');//用原生代码
dump($res);
}
5、返回ID的方法getId
public function getId(){
$data = ['title'=>'测试3','content'=>'测试3','stu'=>'17'];
$res = DB::table('msgs')->insertGetId($data);
dump($res);
}
6、文档
第6章 DB类操作数据库
按 MVC 的架构,数据库的操作大部分应放在 Model 中,
但如果不用 Model,我们也可以用 laravel 的 DB 类操作数据库.
而且,如果某些极其复杂的sql,用 Model 已经很难表达,要手写sql.也需要用 DB 类去执行原生sql.
laravel 中 DB 类的基本用法:DB::table('users') 获取操作users表的实例.
6.1 insert 添加操作
插入单行,一维数组形式,数组的键就是表的字段,返回值为true 和 false;
$row = ['titles'=>'哈哈','email'=>'aaa@qq.com'];
DB::table('goods')->insert($row);
插入多行 (多维数组)
$rows = array(
array('titles'=>'哈哈111','email'=>'aaa@qq.com'),
array('titles'=>'哈哈222','email'=>'aaa@qq.com')
);
DB::table('goods')->insert($rows);
插入后返回主键值 获取主键值,用insertGetId()方法,(多维数组不行??)
$rows = array('titles'=>'哈sdak','email'=>'aaa@qq.com');
$id = DB::table('goods')->insertGetId($rows);
var_dump($id);
6.2 update 修改操作
典型修改
DB::table('users')->where('id', 1)->update(['age' => 19])
相当于sql:
update users set age=19 where id=1 ;
某字段在原基础上 增长或减少 increment/decrement
返回值是受影响的行数;
DB::table('users')->where('id',1)->increment('age');//默认步长为1
DB::table('users')->where('id',2)->increment('age', 3); //第二个参数,指定步长
DB::table('users')->where('id',3)->decrement('age');
DB::table('users')->where('id',4)->decrement('age', 3);
6.3 delete 删除操作
var_dump(DB::table('goods')->where('id' , '>' , 3)->delete());
//where 有三个参数时,其中第二个参数当做运算符
//返回受影响的行数
6.4 查找操作
注意 : 取出的数据 , 无论是单行还是多行 , 每一行数据都是以一个类似对象的形式组织的 .
不是关联数组 .
// select * from users;
DB::table('goods')->get();
// select * from user where id > 6
DB::table('goods')->where('id' , '>' 6)->get();
// select id,email from users where id > 6
DB::table('goods')->select('id','email')->where('id' , '>' 6)->get();
// select * from users where id=6 取出单行 , 返回
DB::table('goods')->where('id',6)->first()
//如果你不需要一整行数据,则可以使用 value 方法来从单条记录中取出单个值。此方法将直接返回字段的值:
$email = DB::table('users')->where('name', 'John')->value('email');
//你可以通过pluck方法获取一列的单个字段
$titles = DB::table('roles')->pluck('title');
foreach ($titles as $title) {
echo $title;
}