首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

3分钟短文:Laravel说要用软删除,可不要真删

引言 我们不止一次在系列文章中讲到模型的“软删除”功能,因为现实场景中为了保证数据可追溯,我们几乎不会对数据库进行物理删除。删除数据有可能会造成数据一致性的破坏,进而导致业务逻辑无法跑通。...Laravel本身支持软删除,只需要进行少量的配置更改,以确保在执行delete或destroy时,模型的记录不会被实际删除。作为一个例子,我们修改Event模型以支持软删除。...首先创建一个新的迁移,将名为deleted_at的列添加到events表中: php artisan make:migration add_soft_delete_to_events --table=events...,下次删除与此模型关联的记录时,deleted_at列将被设置为当前时间。...任何设置deleted_at为日期时间值的记录,都不会包含在任何查询结果中,因此看起来已经被删除了。

2.2K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Laravel 6.12.0 版本发布,支持从扩展包加载模型工厂

    另外,这次更新还包含了很多第三方开发者贡献的、用于优化重复操作的语法糖,例如过滤请求输入字段中的非布尔值。...下面我们一起来看下其中比较重要的一些新特性: 1、重要特性 1)从扩展包加载模型工厂 在 Laravel 6.12 中,你可以在扩展包中直接使用已经存在的模型工厂,而不需要重新创建它们,方法是在服务提供者中引入对应的包含模型工厂的文件...,然后就可以使用它们了: // 在某个服务提供者中......Github 上查看完整的新特性列表和更新记录:https://github.com/laravel/framework/blob/e18a984a35b6adcd701966b3bc3da022d7533992...防止表名前缀不明确的列 3)代码优化 修复下载大文件时内存使用问题 4)代码调整 使用 Event::fake() 时在解析缓存仓库时替换事件调度器 声明:本文翻译整理自 Laravel News。

    77010

    Laravel5.5 session 的配置及使用示例讲解

    ,虽然没有信息研究核心源码,至少要能灵活顺畅的应用,接下来,主要是介绍Session在 Laravel5.5 中的应用,欢迎指导建议,必将虚心求知 … 框架:Laravel5.5 重点:Session...另外,还有一个大家都感到困惑的问题,就是在 Laravel 的控制器构造函数中是无法获取应用 Session 数据的,这是因为 Laravel 的 Session 通过 StartSession 中间件启动...文档中有说 ,如果你想要从 Session 中移除所有数据,可以使用 flush 方法,即 $request->session()->flush(); ,但是个人测试时发现,在登录成功进行赋值时,会显示如下的报错...驱动方式的配置 SESSION_DRIVER=database 此时进行页面的访问,数据表会被插入一条数据,且不同的浏览器打开网站时,都会增加一条: ?...并且字段 user_id 没有赋值 每次页面刷新或跳转,在时效内,都会进行更新,唯一不变的是 id 不变,待到有效期过后或者更换浏览器再增加新的记录.

    1.4K10

    Laravel学习笔记(四)——模型,更安全的数据存取

    所以就有了MVC模式,根据程序需求自行封装数据库操作类,需要进行数据库操作时,引入类文件,new一个数据库对象即可。如果数据库信息更改,也只需要更改数据库操作类,提升了代码的复用,也便于后期维护。...而在Laravel中的模型就相当于一个功能完善的数据库Helper类,不需要用户自己写,只要掌握基本用法就能很快速方便的对数据库进行操作,哪怕你一点不懂SQL语句。...在第一章就有介绍到,数据库信息保存在项目根目录的 .env 文件中,找到相关的数据库信息,进行修改成自己的数据库配置保存即可。...你可以通过模型查询数据表中的数据,并将新记录添加到数据表中。 定义(绑定)模型 模型创建 首先,用 php artisan make:model 命令创建模型文件(默认存放于/app目录下)。...ORM是通过调用laravel内置的方法来对数据库进行增删改查等操作的,这种方式很大程度上解决了数据库注入等安全问题,同时也增加了代码复用能力。

    1.7K00

    Laravel学习笔记(四)——模型,更安全的数据存取

    所以就有了MVC模式,根据程序需求自行封装数据库操作类,需要进行数据库操作时,引入类文件,new一个数据库对象即可。如果数据库信息更改,也只需要更改数据库操作类,提升了代码的复用,也便于后期维护。...而在Laravel中的模型就相当于一个功能完善的数据库Helper类,不需要用户自己写,只要掌握基本用法就能很快速方便的对数据库进行操作,哪怕你一点不懂SQL语句。...在第一章就有介绍到,数据库信息保存在项目根目录的 .env 文件中,找到相关的数据库信息,进行修改成自己的数据库配置保存即可。...你可以通过模型查询数据表中的数据,并将新记录添加到数据表中。 定义(绑定)模型 模型创建 首先,用 php artisan make:model 命令创建模型文件(默认存放于/app目录下)。...ORM是通过调用laravel内置的方法来对数据库进行增删改查等操作的,这种方式很大程度上解决了数据库注入等安全问题,同时也增加了代码复用能力。

    2.1K00

    Laravel5.2之Demo1——URL生成和存储

    学习主题 该demo主要涉及如下几个知识点: 创建数据库并迁移数据表 创建表单,学习Laravel的blade模板引擎 创建名为Link的模型Model 保存数据进入数据库 从数据库中获得...这里的url表示提交表单时的路由,方法为post。在这里使用laravelcollective/html这个组件,顺便了解下怎么在laravel中安装组件。 这里书中使用了laravel4....数据表的名称,fillable用来配置数据表字段(column)被批量创建和更新的,因为后文在保存数据进入表里时使用Link::create([])方法来进行批量赋值的。...4、保存数据进入数据库 写好视图表单后,再就是写表单的提交路由及其控制器逻辑,在控制器中引用创建好的Link这个Model往links数据表里存数据。...} (4).向link数据表里插入一个新的记录record: else{ $newHash = Hash::make(Input::get('link'));//根据输入的link做hash哈希就行或者别的更简短的输入值

    24.1K31

    为什么 Laravel 这么优秀?

    比如你在上一次变更操作中错误的设置了某个表的索引,那我理解的正确的做法不是回滚,而是创建一个新的迁移文件,并在新的迁移文件中 ALTER 之前的修改。...Laravel 用一个数组保存你注册过的所有路由;在进行路由匹配时,Laravel 会用你当前请求的 pathinfo 来匹配已经注册的所有路由;当你的路由数量超级多时,最坏情况下你需要 O(n) 次才能找出匹配的路由...Create Course # 接下来我们来看在 Laravel 中是如何优雅的保存数据,这部分的记录你可以参考下面这几个 commit: feat: create course chore: switch...如 Java 的 Spring 会在编译时为 Sprint Container 填充不同的对象,在使用时就能向容器获取不同的值。...container 中设置不同的值;如 CacheServiceProvider 会向容器中注册 Cache 对象,后续在使用 Cache::get 时就使用的是这里注册的 Cache 对象,在注册阶段不应该向容器中获取值

    26710

    laravel 学习之路 数据库操作 Migrations

    在远古时代在中小公司中在没有一套比较好用的管理表变动的方案的时候相信童鞋们多少都经历过改数据库的痛苦,每次自己在本地增加了表或者字段都要记录下来告知其他同事,其他同事也得在自己本地修改,还要胆战心惊的改生产跟测试环境的数据库这种经历贼痛苦...--table 和 --create 选项也可用于确定表的名称以及是否在迁移中创建新的数据表。...$table->softDeletes(); 这个方法就是为表增加一个 deleted_at ,laravel 会在删除数据的时候记录操作日期,具体到功能比如 回收站 的功能了,我们可能会删除某些数据,...:caching_sha2_password,而之前的PHP版本中所带的 mysqlnd 无法支持这种验证。...然后在 up 中写上修改的内容即可 ?

    2.3K20

    php基础(一)

    用例子说明,以 Laravel 框架中的控制器作为说明 ①final修饰的类方法不可被子类重写 ②PHP是否重写父类方法只会根据方法名是否一致判断(5.3以后重写父类方法参数个数必须一致) ③重写时访问级别只可以等于或者宽松于父类...AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。...在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。...1.抽象主体(Subject)角色:主体角色将所有对观察者对象的引用保存在一个集合中,每个主体可以有任意多个观察者。 抽象主体提供了增加和删除观察者对象的接口。主体也就是被观察者。...2.抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,在观察的主体发生改变时更新自己。

    2.1K20

    Vuebnb:一个用vue.js和Laravel构建的全栈应用

    代码最初是写在一个浏览器的脚本文件,但随着复杂性的增加使用WebPack生成,并设置允许单个文件组件和ES+功能。 后台应用程序,内置Laravel。...在Vue-Router服务下,Web服务允许Vuebnb像一个单一的网页应用程序。我还用Laravel安全认证的API调用,这是让用户能够保存他们喜欢的房间列表。...为了在会话中持久化状态,我通过Ajax将它发送回存储在数据库中的服务器。通过Laravel的验证接口来验证相关API调用。...例如,有一列数据是从Laravel到内页的,Vue.js通过使用刀片视图来实现,可以很容易地使用模板变量向页面头部注入数据。这个数据可以在Vue应用程序中就初始化。...解决方案包括一个协同使用Vue的Vue-Router,Vuex和Axios一起创造一个令人惊讶的简单机制,在需要用于检索数据时使用它。 ?

    6K10

    PHP密码散列算法的学习

    PHP密码散列算法的学习 不知道大家有没有看过 Laravel 的源码。在 Laravel 源码中,对于用户密码的加密,使用的是 password_hash() 这个函数。...这个函数是属于 PHP 密码散列算法扩展中所包含的函数,它是集成在 PHP 源码中的扩展,并且还是 PHP 官方所推荐的一种密码加密方式。那么它有什么好处呢?...而 password_hash() 就是在它的基础上增加了一套可靠的随机盐值生成器并封装在这一个函数中了。具体内容我们通过下面的代码一步一步来进行学习。...这些信息是后面我们进行密码匹配时所必须的内容。有人又说了,既然有盐值,为什么我们没有定义这个盐值呀,这样我们后面如何匹配呢?...验证密码散列数据格式是否一致 有的时候,我们想要升级当前的密码强度,比如将密码循环次数增加,而数据库中新老算法的密码混杂着记录在一起,这时应该怎么办呢?

    1.3K10

    MySQL 【常识与进阶】

    不过和Innodb不同,MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。...普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。...唯一索引:索引列中的值必须是唯一的,但是允许为空值, 主键索引:是一种特殊的唯一索引,不允许有空值。...注意key_len的值可以告诉你在联合索引中mysql会真正使用了哪些索引。这里就使用了1个索引,所以为1, ref: 给出关联关系中另一个数据表中数据列的名字。...要查看其中查询时使用的索引,必须先往表中插入数据,然后在查询数据,不然查找一个没有的id值,是不会使用索引的。

    84150

    SQL反模式学习笔记6 支持可变属性【实体-属性-值】

    优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少; (2)新增属性时,不需要新增列。...如何识别反模式:当出现以下情况时,可能是反模式   (1)数据库不需要修改元数据库(表中的列属性)就可以扩展。还可以在运行时定义新的属性。   ...解决方案:模型化子类型   1、单表继承:所有属性都在一个单表上保存,增加属性时就扩充这个表。...又由于这些新对象具有一些和老对象不用的属性, 因而必须在原有表里增加新的属性列,可能会遇到一个实际的问题,就是每张表的列的数量是有限制的...因此,如果将一个新的属性增加到通用属性中, 必须为每个子类表都添加一遍。

    1.2K20

    composer (一) -- 依赖管理

    vendor 目录,其中是项目依赖的包及包依赖的其他包的源码,还有一个自动加载文件 – autoload.php install and update 安装更新项目所有依赖 并不是每个项目都是新创建的项目,在平常的开发中...通常用来更新依赖包的版本或增加了新的依赖时使用 删除依赖 只需要修改 composer.json 文件的 require 中的包键值对,再进行 composer update即可删除依赖。...remove packageName # packageName 为要删除的包名 composer.lock 文件 composer.lock 是通过 composer 进行安装或更新依赖后生成的一个文件,会记录上次操作的记录...当我们确定了包的使用范围时:可以使用 –dev 来标识为开发模式专用。...仅仅这样是无法进行区分的,还需要配合 --no-dev 来使用 在线上的项目中进行更新依赖 composer install --no-dev # or composer update --no-dev

    1.8K30

    如何在Ubuntu 14.04上使用Ansible部署多个PHP应用程序

    在之前的教程中,我们对所有配置细节进行了硬编码,这对于执行特定应用程序特定任务的许多剧本来说是正常的。但是,当您希望支持多个应用程序或扩大您的剧本范围时,将所有内容硬编码就都不再具有意义。...在我们进一步讨论之前,当涉及变量时,有一些事项需要我们注意。...branch: example domain: laravel.example.com 现在,打开你的剧本进行编辑: nano php.yml 在顶部vars部分,我们可以将我们的应用程序添加到新的应用程序列表中...如果我们按原样离开它们,我们将无法在同一服务器上拥有多个站点,因为它们会不断地覆盖每个站点,最终只会保存最后一个站点。...我们希望仅包含laravel应用程序的内容,使其成为默认值。为此,我们可以使用基本的IF语句来检查item.name是否等于laravel,如果是,则显示default_server。

    8.7K00

    laravel 学习之路 数据库操作 查询数据

    运行 Select 查询 你可以使用 DB Facade 的 select 方法来运行基础的查询语句我们在上面创建的路由里增加个 index 的路由 dump 是 laravel 的打印函数可以把它理解为...传递给 select 方法的第一个参数就是一个原生的 SQL 查询,而第二个参数则是需要绑定到查询中的参数值。通常,这些值用于约束 where 语句。参数绑定用于防止 SQL 注入。...如果必须要允许用户通过选择某些列来进行查询,请始终根据允许列的白名单来校验列名。...如果你甚至不需要整行数据,可以使用 value 方法从记录中获取单个值 function getRow() { $data = DB::table('test')->where...获取一列的值 当然业务中有时候需要获取 某个字段 哪一列的值的集合,这个时候就用到了 pluck 方法,pluck 接受 2 个参数 第一个参数是我们要取的字段; 第二个字段是可以选的用来做 key

    3.2K20

    php系列一之composer的安装与使用

    将 composer.phar 复制到 PHP 的安装目录下面,也就是和 php.exe 在同一级目录。在 PHP 安装目录下新建一个 composer.bat 文件,并将下列代码保存到此文件中。...关于升级 Composer Composer 升级时是无法利用我们的镜像加速下载的,而必须连接到 Composer 国外官网的服务器上下载升级文件,某些时候就会导致升级的速度非常慢甚至失败。...这里提供一个简单的办法:如果你的系统中已经有可以正常使用的 Composer 了,说明系统环境是符合要求的,那么只需要下载新的 Composer 文件并覆盖原来的文件即可。...comopser.lock composer.lock 这个文件主要是解决在协同开发中组件及其依赖的版本记录,防止不同人使用的组件及依赖版本不同。...composer.lock 保存的是组件及其依赖的具体版本,在多人协同开发的情况下,这个文件能很好的解决组件不同而产生的问题。

    4.8K20

    EasyWeChat初体验

    php return [ /** * Debug 模式,bool 值:true/false * * 当值为 false 时,所有的日志都不会记录 */...此时你需要登录微信公众平台,在【开发】->【接口权限】页面找到网页授权获取用户基本信息进行配置并保存。 网页授权域名应该为通过 ICP 备案的有效域名,否则保存时无法通过安全监测。...配置好URL(服务器地址)以及Token(令牌)后,点击保存时提示token验证失败,出现这种情况的原因有多种,其中之一便是网络不稳定,所以可尝试多次保存,若始终无法通过再排查其它可能因素。...配置保存成功之后,向公众号发送消息无任何反应,自己的消息处理程序也没有被调用的记录(无对应日志)。这种情况下如果你尝试反复停用和启用服务器配置,可能突然间惊奇地了现,问题莫名其妙的解决了。...另外有的朋友的 Laravel 里使用了 laravel-debugbar,这个组件的原理是在页面输出时在后面添加 HTML 来实现的,所以它会改变我们返回给微信的内容,此时要么卸载,要么禁用掉它。

    3.9K70
    领券