为你自己学laravel - 15 - model的更新和删除

为你自己学laravel。

model的部分。

这一次讲解的是model当中怎么从数据库当中更新数据和删除数据。


在这里插入图片描述

先从数据库当中抓出来资料。

当然我们是使用php artisan tinker进入到终端机。

在这里插入图片描述

我们的做法是想要将available这个栏位修改成为true。

第一种更新方法

image-20231220215311452

上面我们就是修改了对象当中的一个栏位,修改了之后,我们要记得使用$b1->save()这种方法。

image-20231220215350266

上面的这张图的意思,就是我们进行验证的时候,查看的时候,看到了,真的是已经变成了1。


sqlite当中并没有资源处理true或者false,所以它使用的tiny integer这种东西处理布尔值。


上面的做法,就是更新的第一种做法了。

第二种更新方法

image-20231220215538776

image-20231220215555285

$b2->update(['available' => true])

这种做法就是直接呼叫update方法,就可以做到了。

你就不需要呼叫save方法了。


验证查询一下:

image-20231220215803655

Book::where('available', true)

这个做法,就是查询一下,所有的available的字段是true的book了。

批量更新

Book::where('available', true)->update(['available' => false])

这是要将所有在架子上面的书,都变成了false。

更新,就是将资料抓出来,然后更新它。

删除

image-20231220221826447

这个是第一步,就是先在资料库当中新增了一个书籍。

我现在的目的,就是想要删除掉,我已经添加的这一本。

第一种删除方法

image-20231220221917596

这是使用实例的方法,就是先将数据库当中的资料,先抓出来,抓出来了之后,再砍掉的,这种做法。

第二种删除方法

image-20231220222021543

这是使用类的方法,就是destroy的方法。

软删除-逻辑删除

电商网站当中,删除不是真正的删除的哦~。

在laravel的ORM当中,算是有半内建的套件,是可以用的。

这个动作,我们叫做soft-delete

laravel的做法是:帮你建立一个栏位,delete_at,默认值是null的。

如果我们进行soft-delete,我们就会将删除的时间,写到delete_at这个栏位。

我们要做软删除,就要新增一个栏位。

我们要对资料表做栏位的修改,我们应该通过migration来做的。

image-20231220223302791

php artisan make:migration add_deleted_at_to_books

我们这里,是使用了,migration的魔术语法。

image-20231220223343347

上面就是为我们新增好的migration。

image-20231220223416281

$table->dataTime('deleted_at');

这是一种创建软删除的方法。

image-20231220223516753

laravel当中会提供一个东西,就是上面的内容。

$table->softDeletes();

有了这个方法,你就不需要自己写了。

我们是推荐这一种写法的。

然后在migration的down当中应该写什么呢?

image-20231220223641499

$table->dropSoftDeletes();

然后就可以跑到终端机当中执行了:

image-20231220223721580

php artisan migrate

然后,我们去数据库当中看一看,发现是真的有诶~

image-20231220223804466

image-20231220223817836


要注意,不是你在数据库当中添加了这个delete_at栏位之后就有效果的,你还是需要在model当中动一些手脚的。

image-20231220224157135

就是像是上面这个样子的,就是要在model的类当中,使用模组use SoftDeletes;


假设你是不希望在数据库表当中,用于软删除的栏位是delete_at这个栏位的话。

你也是可以在model当中进行设定的。


在php artisan tinker当中进行验证。

image-20231220224342078

这个当然是删除的一般的步骤了。

image-20231220224409888

但是在数据库当中,还是有数据的,delete_at这个栏位是有时间的。


我软删除了之后,我还是想要找到他的,我怎么找到他呢?

image-20231220224538929

总结

$b1->available = true
$b1->save()

$b2->update(['available' => true])

$b3->delete()

Book::destroy(4)

软删除的方法:

第一是在migration当中使用操作数据库表的栏位,新增delete_at这个栏位。

第二是在model当中要使用use SoftDelete这种套件。

image-20231220224502438

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/259630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于学生心理学算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于学生心理学算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于学生心理学算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学生心理学算法4.实验参数设定5.算法…

RocketMQ系统性学习-RocketMQ原理分析之Broker接收消息的处理流程

Broker接收消息的处理流程? 既然要分析 Broker 接收消息,那么如何找到 Broker 接收消息并进行处理的程序入口呢? 那么消息既然是从生产者开始发送,消息是有单条消息和批量消息之分的,那么消息肯定是有一个标识&#…

go语言函数二、init函数定义与作用

go语言init函数定义与作用 在go语言中,每一个源文件都可以包含一个init函数,这个函数会在main函数执行前,被go运行框架调用,注意是在main函数执行前。 package main import ("fmt" )func init() {fmt.Println("i…

石器时代H5小游戏架设教程

本文讲解石器时代 H5 之恐龙宝贝架设教程,想研究 H5 游戏如何实现,那请跟着此次教程学习在拥有小游戏源码的情况下该如何搭建起来 开始架设 1. 架设条件 石器时代架设需要准备: 一台linux 服务器,建议 CentOs 7.6 版本&#xf…

数据安全扫描仪荣膺网络安全优秀创新成果大赛优胜奖 - 凸显多重优势

近日,由中国网络安全产业联盟(CCIA)主办、CCI数据安全工作委员会中国电子技术标准化研究院等单位承办的“2023年网络安全优秀创新成果大赛”获奖名单公布。天空卫士数据安全扫描仪(DSS)产品获得创新成果大赛优胜奖。 本…

C++中的RAII机制及其智能指针的应用

一、引言 C是一种高效且功能强大的编程语言,但内存管理一直是其一大挑战。为了简化资源管理,C引入了RAII(Resource Acquisition Is Initialization)机制。本文将深入探讨RAII的原理,并通过智能指针这一具体实现来展示…

云原生之深入解析Thanos在EKS多集群架构上存储多个集群Prometheus

一、前言 随着 HiredScore 的产品和客户群越来越大,已经开始向 Kubernetes 过渡并迅速采用它,它是我们重要的障碍之一,也可能是最大的监控基础设施。我们在使用 Prometheus / Grafana 堆栈进行监控方面有一些经验,了解到希望创建…

如何用 CleanMyMac 来保护 Mac 隐私

大家早上好,中午好,下午好,晚上好。 在我们使用MacBook上的自带浏览器-Safari(或者一些其他浏览器)进行网页浏览的时候,往往会留下一些痕迹。如果这些痕迹涉及一些敏感数据信息的话,那么我们肯…

1_js基本简介数据类型变量的使用

1. 编程语言简介 1.1 计算机编程语言 计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的、具有一定语法规则的语言。从计算机诞生,计算机语言经历了机器语言、汇编语言和高级语言几个阶段。 高级语言:JavaScript&#x…

Flink Table API 与 SQL 编程整理

Flink API总共分为4层这里主要整理Table API的使用 Table API是流处理和批处理通用的关系型API,Table API可以基于流输入或者批输入来运行而不需要进行任何修改。Table API是SQL语言的超集并专门为Apache Flink设计的,Table API是Scala和Java语言集成式…

Android Studio: 解决Gradle sync failed 错误

文章目录 1. 前言2. 错误情况3. 解决办法3.1 获取gradle下载地址3.2 获取gradle存放目录3.3 替换并删除临时文件3.4 触发Try Again 4. 执行成功 1. 前言 今天调试项目,发现新装的AS,在下载gradle的过程中,一直显示连接失败,Gradl…

【MyBatis学习笔记】MyBatis基础学习

MyBatis基础 MyBatis简介MyBatis特性MyBatis下载和其他持久化层技术对比 核心配置文件详解默认的类型别名 搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能 MyBatis获取参数值的两种方式&am…

欧美电商平台Depop如何入驻?

对标美国二手闲鱼平台Mercia,PoshMark、东南亚Etsy,Depop是英国的一个面向创意人群的二手时尚市场,类似于Instagram,但更专注于买卖二手服装、配饰和艺术品。 有研究显示,由于购物预算减少,高达65%的受访者表示乐意在圣诞节购买或收到二手礼…

【⭐️大厂干货】阿里程序员私藏提效IntelliJ IDEA插件大放送️ ~

️ ❗文末有🌈🥚(彩蛋) 要问对后端程序员最重要的软件是哪个?IntelliJ IDEA说第二,估计没有其他软件可以称第一。在工作过程中我发现对于这么重要的软件,有些开发同学竟然把它“打扮”的甚是简…

AI日报:信用公司转型人工智能的长采访...或许能给你一些启发

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 总览什么是FICOFICO的转型如何转型人工智能平台功能 构建人工智能平台中遇到的问题关于生成式人工智能银行客户的反馈内部情况 一些社会问题 总览 FICO软件执行副总裁Stephanie Covert加入人工智能商业播客&#x…

MongoDB的原子操作findAndModify和findOneAndUpdate

本文主要介绍MongoDB的原子操作findAndModify和findOneAndUpdate。 目录 MongoDB的原子操作一、findAndModify二、findOneAndUpdate MongoDB的原子操作 MongoDB的原子操作指的是在单个操作中对数据库的数据进行读取和修改,并确保操作是原子的,即要么完全…

linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志

想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell脚本&#xff0…

Pixel Nerf代码阅读

Input: 图像的 分辨率是 300*400; 每个场景里面有 49张 Training 的图像。 SB: scene batch 场景的个数; 4 NV: number input ,每个场景的视角,也就是图像的数量; 49 每条光线首先…

JS逆向实战——开发者工具检测

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、背景 在JS逆向领域,Chrome开发者工具是核心,抓包、调试、看调用栈等都离不开它。可以说,逆向人…

blast安装及简单使用

一、安装blast 1.Ubuntu环境 # 下载blast wget https://ftp.ncbi.nlm.nih.gov/blast/executables/blast/2.9.0/ncbi-blast-2.9.0-x64-linux.tar.gz # 解压blast压缩包 tar -xzvf ncbi-blast-2.9.0-x64-linux.tar.gz # 测试 ./bin/blastp -h 这里就代表安装成功了,…