Laravel学习笔记2,数据库操作

4 篇文章 0 订阅
4 篇文章 0 订阅

1、数据库表的创建与配置

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

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

(2)数据库在laravel框架中的配置
.env文件里面

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=

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

学习环境建议关闭'strict'的严格模式
注意:如果是php artisan serve方式启动的,修改了配置文件,则需要重新启动,才能读取修改后的配置文件;如果是wamp/lamp等环境则不需要重启。

(3)在控制器中引入DB门面;

use DB; #VSCode会报错,但是可以用
use Illuminate\Support\Facades\DB; #这里使用这个

(4)定义增删改查需要的路由
增加:/db/add
删除:/db/del
修改:/db/update
查询:/db/select

#DB路由
Route::group(['prefix' => 'db'], function () {
    Route::get('add', [TestController::class, 'add']);
    Route::get('del', [TestController::class, 'del']);
    Route::get('update', [TestController::class, 'update']);
    Route::get('select', [TestController::class, 'select']);
});

2、增加信息(insert)

对数据库中的某个表增加数据主要有两个函数可以实现,分别是insert()和insertGetld()
insert(数组)可以同时添加一条或多条,返回值是布尔类型。
insertGetld(一维数组),只能添加一条数据,返回自增的id。
注意: DB:table('无前缀的表名")
向member表同时添加多条数据

// 定义需要操作的数据表
$db = DB::table('member');
// 使用insert增加记录 连贯操作/链式操作
$result = $db->insert([ #插入一条或多条
    [
        'name' => '马东梅',
        'age' => '18',
        'email' => 'mdm@qq.com'
    ],
    [
        'name' => '马东',
        'age' => '19',
        'email' => 'md@qq.com',
    ]
]);

$result = $db->insertGetId( #insertGetId()方法 返回:3
    [
        'name' => '赫文婷',
        'age' => '18',
        'email' => 'hwt@qq.com'
    ]
);

3、修改数据(update)

数据修改可以使用update()、increment()和 decrement()函数来实现。
Update表示可以修改整个记录中的全部字段;
Increment和decrement表示修改数字字段的数值(递增或者递减);典型应用:记录登陆次数;

案例:把id=1的名称改名为“张三疯”
->where(字段,运算符,值)->update([])    如果运算符为"=",则第二个参数可以不写
返回的结果是受到影响的行数

// 修改id为1的用户名称为张三疯
$result = $db->where('id', '=', '1')->update([
    // 需要修改字段的k:v
    'name' => '张三疯',
]);

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

$result = $db->where('id', '=', '1')->increment('age', 5);
DB::table('users')->increment('votes');    #每次+1
DB::table('users')->increment('votes', 5); #每次+5
DB::table('users')->decrement('votes');    #每次-1
DB::table('users')->decrement('votes', 5); #每次-5

案例:清空整个表DB::table('users')->truncate();

4、查询数据(get)

(1)取出基本数据

案例1:获取member表中所有的数据
DB::table('member')->get(); 相当于select * from member
返回值是一个集合对象。


案例2:获取id<3的数据
-> where('id' , '<' , '3') -> get()

注意: where方法之后继续调用where方法
-> where() -> where() -> where()...           这个语法是并且(and) 关系语法。
-> where() -> orWhere() -> orWhere()...   这个语法是或者(or)关系语法。

案例3:查询id>2且年龄<21
->where('id', '>', '2')->where('age', '<', '21')->get();

(2)取出单行数据

->where('id', '<=', '2')->first(); #返回值是一个对象
等价于limit 1

(3)获取某个具体的值(一个字段,返回单个值)

DB::table('member')->where('id', '<=', '2')->value('email'); #返回值是一个对象

(4)获取某些字段数据(多个字段,返回数组)

DB::table('member')->where('id', '<=', '2')->select('name', 'email')->get();

(5)排序操作

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

(6)分页操作

DB::table('member')->offset(0)->limit(3)->get();
等价 limit 0,3

5、删除数据(delete) 【了解】

在删除中,有两种方式:物理删除(本质就是删除)、逻辑删除(本质是修改)

Delete() 表示删除记录
Truncate() 表示清空整个数据表
返回的结果是受到影响的行数

例如:删除id小于3的记录
DB::table('member')->where('id', '<' , '3')->delete();

6、执行任意的SQL语句【了解】

(1) 执行任意的 insert update delete 语句【影响记录的语句使用statement语法】
DB::statement("insert into member values(null,"')");
(2)执行任意的select语句【不影响记录的语句使用select语法】
$res = DB::select("select * from member'");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值