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

laravel7 ORM和laravel模型操作的更多相关文章

  1. laravel 模型操作

    1. 简介 2. 创建模型 //模型文件默认创建在app目录下,也可以指定创建在某个文件夹下,如Model/Goods 1. php artisan make:model Goods 2. 这种方式会 ...

  2. 黑马lavarel教程---5、模型操作(AR模式)

    黑马lavarel教程---5.模型操作(AR模式) 一.总结 一句话总结: AR: ActiveRecord :Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型 ...

  3. Laravel 5.2 四、.env 文件与模型操作

    一..env文件 .env 文件是应用的环境配置文件,在配置应用参数.数据库连接.缓存处理时都会使用这个文件. // 应用相关参数 APP_ENV=local APP_DEBUG=true //应用调 ...

  4. django创建ORM模型、通过ORM模型操作单个表、ORM模型常用字段

    一.ORM简介 ORM ,全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句.通过把表映射成类,把行作 ...

  5. Django中模型层中ORM的单表操作

    ORM概念: MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  6. Laravel模型事件的实现原理详解

    模型事件在 Laravel 的世界中,你对 Eloquent 大多数操作都会或多或少的触发一些模型事件,下面这篇文章主要给大家介绍了关于Laravel模型事件的实现原理,文中通过示例代码介绍的非常详细 ...

  7. Laravel 模型事件入门

    Laravel 模型事件允许你监听模型生命周期内的多个关键点,甚至可以在阻止一个模型的保存或者删除. Laravel 模型事件文档 概述了如何使用钩子将对应事件与相关的事件类型关联起来,但是本文的主旨 ...

  8. ORM的单表操作

    ORM的单表操作 MTV框架包含一个重要的部分就是ORM----对象关系映射(Object Relational Mapping),它实现了数据模型与数据库的解耦,即数据模型的设计.利用它我们不需要依 ...

  9. ORM对象/关系模型

    1 ORM 对象关系映射(ORM)提供了概念性的.易于理解的模型化数据的方法.ORM方法论基于三个核心原则: 简单:以最基本的形式建模数据. 传达性:数据库结构被任何人都能理解的语言文档化. 精确性: ...

随机推荐

  1. AT2272 [ARC066B] Xor Sum

    我们可以知道异或可以看成不进位的加法,那么我们就可以得到 \(a + b = a\) ^ \(b + ((a \& b) << 1)\),不难发现 \(\frac{v - u}{2 ...

  2. Sleep_Yield_Join

    名称解释 Sleep:意思就是睡眠,当前线程暂停一段时间让给别的线程去运行;Sleep是怎么复活的?由你的睡眠时间而定,等睡眠到规定的时间自动复活. Yield:就是当前线程正在执行的时候停止下来进入 ...

  3. python开发: linux进程占用物理内存

    #!/usr/bin/env python #-*- coding:utf-8 -*- ''' 统计linux进程占用的物理内存 ''' import os import sys import sub ...

  4. Java向mysql中插入时间的方法

    ava向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源  java向MySQL插入当前时间的四种方式 第一种:将java.util.Date类型的 ...

  5. Docker的数据管理(上)

    Docker的数据管理(上) 1.管理docker容器中数据 2.容器互联(使用centos镜像) 1.管理docker容器中数据: 管理Docker 容器中数据主要有两种方式:数据卷(Data Vo ...

  6. MSTP多生成树协议

    MSTP多生成树协议 目录 MSTP多生成树协议 1.MSTP(Multiple Spanning Tree Protocol)概述 2.STP.RSTP.PVST的应用缺陷 3.MSTP的主要特点 ...

  7. nginx负载均衡中常见的算法及原理有哪些?

    一.nginx负载均衡常用算法 1.1 轮询 轮询,nginx默认方式.一次将请求分配给各个后台服务器. upstream backserver { server 10.0.0.7; server 1 ...

  8. Redis 在 vivo 推送平台的应用与优化实践

    一.推送平台特点 vivo推送平台是vivo公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定.可靠的长连接,为开发者提供向客户端应用实时推送消息的服务,支持百亿级的通知/消息推送,秒 ...

  9. Ubuntu18关机时出现 A stop job is running for ...导致关机很慢

    1. 修改/etc/systemd/system.conf sudo vim /etc/systemd/system.conf 2. 找到一下两行 #DefaultTimeoutStartSec=90 ...

  10. 有序取出Map集合的元素

    最近写到一个程序,返回了map,但是经过查阅资料,map是没有顺序的,各种查阅资料无果,最后自己写了这个方法.. 1,通过map集合的keySet()方法,获取到一个包含map所有key的Set集合 ...