laravel7 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(需要配置)

posted @ 2021-12-02 11:26  王越666  阅读(412)  评论(0编辑  收藏  举报