larval 操作mysql数据库_laravel的数据库操作(三种)

本文详细介绍了如何在 Laravel 中使用 DB Facade 完成 CURD 操作,包括数据表的创建、数据库连接配置。接着,文章深入探讨了查询构造器的各种功能,如新增、更新、删除和查询数据,并展示了使用聚合函数的方法。最后,文章讲解了 Eloquent ORM 的基本用法,包括模型建立、数据增删改查,以及批量赋值和时间戳的处理。
摘要由CSDN通过智能技术生成

laravel中提供了DB facade(原始查找)、查询构造器和

Eloquent ORM三种操作数据库方式

1.新建数据表与连接数据库

1.1 新建数据表

学生表

CREATE TABLE IF NOT EXISTS student(

`id` INT AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '姓名',

`age` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',

`sex` TINYINT UNSIGNED NOT NULL DEFAULT 10 COMMENT '性别',

`created_at` INT NOT NULL DEFAULT 0 COMMENT '新增时间',

`updated_at` INT NOT NULL DEFAULT 0 COMMENT '修改时间'

)ENGINE=INNODB DEFAULT CHARSET = UTF8 AUTO_INCREMENT=1001 COMMENT='学生表';

1.2连接数据库

config/database.php 注意观察database.php 中表前缀

.env

以及.env中的部分参数配置

DB_HOST=localhost //host

DB_DATABASE=laravel //数据库名字

DB_USERNAME=root //账号

DB_PASSWORD=root //密码

2.使用DB facade实现CURD

//insert插入

//$bools = DB::insert('insert into  student (name,age) values(?,?)',['imooc',19]);

//update更新

//$numbers = DB::update('update student set age = ? where name = ?',[20,'sean']);

//var_dump($numbers);

//查询

//$students = DB::select('select * from student where id >?',[1001]);

//dd($students);//格式化的输出,更加美观

//删除

$num = DB::delete('delete from student where id > ?',[1001]);

var_dump($num);

2.查询构造器

2.1查询构造器简介及新增数据

laravel查询构造器(query builder)提供方便、流畅的接口,

用来建立及执行数据库查找语法

使用pdo参数绑定,以保护应用程序免于SQL注入,因此传入的

参数不需要额外的转义特殊字符

基本可以满足所有的数据库操作,而且在所有支持的数据库

系统上都可以执行

新增数据

//插入

//$bool = DB::table('student')->insert(

// ['name'=>'imooc','age'=>18]

// );

//var_dump($bool);

//$id = DB::table('student')->insertGetId(

// ['name'=>'sean','age'=>18]

// );

//var_dump($id);

//多个参数的插入

$bool = DB::table('student')->insert([

['name'=>'name1','age'=>18],

['name'=>'name2','age'=>19]

]);

var_dump($bool);

2.2使用查询构造器更新数据

@1更新为指定的内容、

@2自增以及自减

//更新数据要带上条件where

//$num = DB::table('student')

//->where ('id',1004)

//->update(['age'=>30]);

//var_dump($num);

//自增

//$num = DB::table('student')->increment('age');

//$num = DB::table('student')->increment('age',3);

//自减

//$num = DB::table('student')->decrement('age',3);

//$num = DB::table('student')

//->where('id',1004)

//->decrement('age',3);

//自增的同时修改其他的参数

$num = DB::table('student')

->where('id',1004)

->increment('age',1,['name'=>'iimooc']);

var_dump($num);

2.3使用查询构造器删除数据

@1 delete

//删除一行

//$num = DB::table('student')

//->where('id',1004)

//->delete();

//删除符合条件的多行

//$num = DB::table('student')

//->where('id','>=',1005)

//->delete();

//var_dump($num);

@2 truncate//很危险一般不建议用TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

正因为上述原理,如果有ROLLBACK语句,DELETE操作将被撤销,但TRUNCATE不会撤销。

//DB::table('student')->truncate();

//这个操作不返回任何的东西

2.4使用查询构造器查询数据

@1 get()

//get()获取表的所有数据

//$students = DB::table('student')->get();

@2 first()

//first()获取结果中的第一条数据

//$students = DB::table('student')

//->orderBy('id','desc')

//->first();

@3 where()

//where

//$students = DB::table('student')

//->where('id','>=','1002')

//->get();

//where加多个条件

//$students = DB::table('student')

//->whereRaw('id>=? and age >?',[1001,18])

//->get();

//dd($students);

@4 pluck()

//pluck返回结果集中的指定字段

//$name = DB::table('student')

//->pluck('name');

@5 lists()

//lists 可以指定返回某个键作为下标

//$name = DB::table('student')

//->lists('name','id');

@6 select()

//select

//$students = DB::table('student')

//->select('id','name','age')

//->get();

@7 chunk()

//chunk分段进行获取,真实项目中会一次插入一千条

//可以加入return false让语句进行停止

echo '';

DB::table('student')->chunk(2,function($students){

var_dump($students);

//一般配合if条件使用

//return false;

});

2.5查询构造器中的聚合函数

@1 count()$num = DB::table('student')->count();

@2 max()$max = DB::table('student')->max('age');

@3 min()$min = DB::table('student')->min('age');

@4 avg()$avg = DB::table('student')->avg('age');

@5 sum()$sum = DB::table('student')->sum('age');

3.Eloquent ORM

3.1Eloquent ORM简介、模型的建立以及查询数据

@1 Eloquent ORM的简介

laravel所自带的Eloquent ORM是一个优美简洁的ActiveRecord实现,用来实现数据库操作

每个数据表都有一个与之相应的“模型”(Model)用于和数据表交互

@2 模型的建立

';

//Student::chunk(2,function($students){

// var_dump($students);

//});

//聚合函数 count max min 等等

//$num = Student::count();

$max = Student::where('id','>=',1001)

->max('age');

var_dump($max);

//dd($students);

3.2Eloquent ORM中新增数据、自定义的时间戳以及批量赋值的使用

@1 通过模型新增数据(设计到自定义时间戳)

Model中的修改

//指定允许批量赋值的字段

protected $fillable = ['name','age'];

//指定不允许批量赋值的字段

protected $guarded = [];

//关闭显示创建和修改时间(自动维护时间戳)一般打开

public $timestamps = true;

//让时间显示成为unix时间戳

protected function getDateFormat()

{

return time();

}

protected function asDateTime($val)

{

return $val;

}

@2 使用模型的Create方法新增数据(涉及到批量赋值)

//使用模型新增数据

//$student = new Student();

//给模型赋值

//$student->name = 'seanaq';

//$student->age = 18;

//用来保存

//$bool = $student->save();

//dd($bool);

//$student = Student::find(1009);

//echo $student->created_at;

//echo date('Y-m-d H-i-s',$student->created_at);

//使用模型的Create方法新增数据

//$student = Student::create(

// ['name'=>'imooc','age'=>18]);

//dd($student);

//firstOrcreate()以属性查找,若没有则新增实例

//$student = Student::firstOrcreate(

// ['name'=>'imoocs']

// );

//firstOrNew()以属性查找,若没有则新增实例.需要保存的话自己调用save()

$student = Student::firstOrNew(

['name'=>'imoocss']

);

$bool = $student->save();

dd($bool);

3.3使用Eloquent ORM修改数据

@1 通过模型更新

//$student = Student::find(1011);

//$student->name = 'kitty';

//$bool = $student->save();

//var_dump($bool);

@2 结合查询语句批量更新

$num = Student::where('id','>',1009)->update(

['age'=>41]

);

var_dump($num);

3.4使用Eloquent ORM删除数据

@1 通过模型删除

//$student = Student::find(1012);

//$bool = $student->delete();

//var_dump($bool);

@2 通过主键值删除

//删除单个

//$num = Student::destroy(1007);

//删除多个

//$num = Student::destroy(1008,1009);

//也可以写在数组中

//$num = Student::destroy([1004,1005]);

//var_dump($num);

@3 根据指定条件删除

$num = Student::where('id','delete();

var_dump($num);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值