Laravel增删改查(AR模式)

一、模型操作(AR模式)

Laravel自带的Eloquent ORM提供了一个美观、简单的数据库打交道的ActiveRecord实现,每张数据表都对应一个与该表进行交互的“Model模型”,模型允许你在表中进行数据查询,以及插入、更新、删除等操作。

1、每个数据表:与数据表进行交互的Model模型映射(实例化模型)
2、记录中的字段:与模型类的属性映射(给属性赋值,字段名就是属性名)
3、表中的每个记录:与一个完整的请求实例映射(具体的CURD操作)

1、定义模型

(1)定义位置:
定义模型的位置,默认是在app目录下Models目录下。

(2)命名规则
本身laravel对模型的命名没有严格的要求,一般采用表名(首字母大写).php
例如:User.php、Goods.php

(3)创建模型
可以使用artisan命令:例如创建一个member模型【模型也可分目录管理】
php artisan make:model Member

例:
在这里插入图片描述
效果:
在这里插入图片描述
(4)定义模型注意事项:

1、(必做)定义一个$table属性,值是不要前缀的表名(真实的表名),如果不指定则使用类名的复数形式作为表名。如果模型为Member模型在不指定table属性的情况下,其默认会去找members表。修饰词:protected
2、(可选)定义$primaryKey属性,值是主键名称,如果需要使AR模式的find方法,则可能需要指定主键(Model::find(n)),在主键字段不是id的时候则需要指定主键,修饰词:protected
3、(可选)定义$timestamps属性,值是false,如果不设置为false,则默认会操作表中的created_at和updated_at字段,我们表中一般没有这两个字段,所以设置为false,表示不要操作这两个字段。修饰词:public。
4、(可选)定义$fillable属性,表示使用模型插入数据时,允许插入到数据库的字段信息,格式是一维数组形式,修饰词:protected(当使用模型的create、save方法的时候最好就得写上这个属性)。反向指定的属性叫做:$guarded

二、模型控制器中调用

引入Member模型类:
在这里插入图片描述
模型的使用,模型在控制器中的使用方式有2种。
1、直接像使用DB门面一样的操作方式:以调用静态方法为主的形式,该形式下模型不需要实例化,例如:Member::get()等价于DB::table(‘member’)->get();
2、实例化模型然后再去使用模型类(普通)
例如:$model = new Member(); $model -> get();

两种形式的选择标准:
如果使用的方法都是laravel框架自带的,则任意选择;
如果使用的方法有用户自己在模型中定义的,使用第2种形式。

三、定义测试路由

增:/mod_add
删:/mod_del
改:/mod_mod
查:/mod_select
在这里插入图片描述

3.1 添加数据

在laravel里面完成数据的添加可以使用两种方式:
方式一(AR模式):使用AR模式必须要实例化模型
注意:在laravel里面添加数据的时候,需要先实例化模型,然后为模型设置属性,最后调用save方法即可。

$member = new Member(); // 映射关系1:将表映射到模型
$member -> name = value; // 映射关系2:将字段映射到属性,属性名和字段名一致
$member -> age = value;

$member -> save(); // 映射关系3:将记录映射到实例

例:
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述
方式二:(隐性的效果)
建立简易表单,表单中有姓名、年龄、邮箱的字段,要求能够提交。
在这里插入图片描述
在这里插入图片描述
首先,在控制器文件引入Request这个类
use Illuminate\Http\Request;(框架自身在创建控制器的时候已经引入)

Request类的使用
1、对象传递、需要在方法的括号里以形参的形式接收Request类,只有接收类才能在方法中使用
2、request语法(与input门面有点类似,方法名在这里插入图片描述
一致,但是input调用的是静态方法,而当前的不是。)
$request->all() // 获取全部传递数据
$request->input(‘name’) // 获取指定的
$request->only([‘name1’, ‘name2’])
$request->except([‘name1’, ‘name2’])

定义fillable属性:
在这里插入图片描述
控制器代码:
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述

3.2 查询操作

获取指定主键的一条数据
$info = Member::find(4); // 非静态方法调用,获取主键为4的数据【等价于条件where id = 4】
其结果集默认是一个对象。
例:
在这里插入图片描述
结果:
在这里插入图片描述


如果想要获取哪一项直接:
在这里插入图片描述
效果:
在这里插入图片描述


返回的不是数组对象,而是模型对象,如果需要在laravel中对象的结果集转化成数组,则需要在最终添加方法的调用:-> toArray()
例:
在这里插入图片描述
效果:
在这里插入图片描述


查询多行并且指定字段

Member::all(); // 查询全部的数据
Member::all([字段1, 字段2]); // 与get方法的区别,all不支持链接其他的辅助查询方法
Member::get()
Member::get([字段1, 字段2])
按条件查询指定多个字段
Member::where(‘id’, ‘>’, ‘2’) -> get([‘列1’, ‘列2’]); // 数组选列
Member::where(‘id’, ‘>’, ‘2’) -> select(‘列1’, ‘列2’) -> get(); // 字符串选列
Member::where(‘id’, ‘>’, ‘2’) -> select([‘列1’, ‘列2’]) -> get(); // 字符串选列

3.3 修改数据

在laravel里面如果需要更新数据(ORM模型方式),需要先调用模型的find方法获取对应的记录,返回一个模型对象,然后为该模型对象设置要更新的数据(对象的属性),最后调用save方法即可。
例如:
$user = User::find($id); // 查询出需要修改的记录实例
$user -> title = $_POST[‘title’];
$user -> content = $_POST[‘content’];
return $user -> save() ? ‘OK’ : ‘fail’;

例: 实现ORM形式模型的修改操作,修改为5的用户的名字为李四:
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述

3.4 删除数据

注意:在laravel里面如果要删除数据,如果需要使用AR模式删除数据必须先根据主键id查询对应的记录,返回一个模型对象,然后调用模型对象的delete方法即可。
例如代码:
$user = User::find($id); // 先查询需要删除的记录
return $user -> delete() ? 'ok' : 'fail'; // 再删除

例:使用AR模式删除id为6的记录:
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

猜你喜欢

转载自blog.csdn.net/weixin_44103733/article/details/113980336
今日推荐