ORM和laravel模型操作
1、什么是ORM
对象关系映射(Object Relation Maping),这个关系就是关系数据库。因此,顾名思义,ORM的核心是我们通过操作对应来操作关系数据库。
ORM的优点:
ORM提供了对象属性与表字段的映射,可以大大提高开发效率
ORM的缺点:
ORM牺牲了一部分性能,同时带来了学习的成本,对于复杂的、大的数据量的查询建议由成型的使用方案,否则可能会出现性能问题,(虽然我还没有遇到),因此到底要不要用ORM是一个比较重要的考量。
2、laravel中的ORM
来源于laravel手册:laravel中提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,并将新记录添加到数据表中,你可以进行CURD操作。
3、实现案列
模型文件存放目录
app底下可以自定义一个目录用来保存模型文件夹
创建模型文件所在的(我们分为直接在Models底下和Models底下分模块创建进行测试)
直接在Models底下创建(表名用复数):
Models底下分模块创建(表名不用复数):
效果如图所示:
ps:命令后面加上-m参数可以创建模板并生成迁移文件
php artisan make:model 模型文件名 # 分目录的 php artisan make:model Models/Member # 创建模板并生成迁移文件 php artisan make:model Models/Article –m -m 生成迁移文件
模型对表的一些限制(laravel中ORM的锲约)
指定表名
模型所对应的默认表名是模型类名复数形式,如果表名不统一则需要指定一下,如图所示:
为什么表名要用复数?
因为更好的支持RESTFULL类型的风格。
指定主键名primary key
laravel中默认的主键ID名为id,如果你创建的表字段中主键ID的名称不为id,则需要通过 $primaryKey 来指定一下。
指定时间戳
模型操作会认为在你的数据库表有 created_at 和 updated_at 字段。如果你不希望让模型来自动维护这两个字段,可在模型内将 $timestamps 属性设置为 false
public $timestamp = false;//注意,这里是public权限
批量赋值操作
执行批量赋值时,要先定义白名单和黑名单,用$fillable和guarded这个数组来定义允许添加的字段和不允许添加的字段。
protected $filable=[];//白名单,允许添加的字段
protectd $guarded=[];//黑名单,不允许添加的字段
CURD基本操作
增
方法一:create方法,要设置$filable或者$guarded
创建控制器并调用模型,如下图所示:(要注意在控制器中使用对应命名空间才可以调用模型的方法)
上述方法会返回一个插入刚才数据的对象,共后续操作。
如下所示
方法二:insert,不推荐因为不安全
返回true or false
上述入库的操作用create操作。
查
# 查询单条 first() # 查询多条 get() # 条件 where() # 排序 orderBy() # 取指定的值 value() # 取指定的列 pluck() # 查询总记录数
改
update
删
因为删除之前工作使用update进行的,所以就不深入了
硬删除:destory和delete
软删除:softDeletes(需要配置)