软删除功能需要实现的功能有以下几点: 1.模型执行删除操作,只标记删除,不执行真正的数据删除 2.查询的时候自动过滤已经标记为删除的数据 3.可以设置是否查询已删除的数据,可以设置只查询已删除的数据 4...Laravel中软删除数据的过滤也是使用这种方式实现的。...,如果有软删除会过滤掉中间模型被删除的数据。...以上就是Laravel实现软删除的大概逻辑。这里有一个细节,Laravel中软删除的标记是一个时间格式的字段,默认delete_at。通过是否为null判断数据是否删除。...但是有的时候,项目中会使用一个整形的字段标记数据是否删除。在这样的场景下,需要对Laravel的软删除进行修改才能够实现。
对应已经存在的表,有些表存在软删除,有些表不存在软删除字段,如果要应用软删除,只能在需要应用的model中一个个添加trait 如果重写Illuminate\Database\Eloquent\SoftDeletestrait...,查询关联关系,不会对中间表应用软删除条件 belonsToMany中的中间表是传入的表名参数,天然没办法获取中间表是否需要应用软删除。...但是中间表的软删除不是通过scope实现的,关联关系对象在创建的时候就已经把中间表的软删除条件附加上去了,因此,即使指定了withTrashed,也会有中间表的软删除查询条件。...如果要修改,也可以,通过scope的方式附加软删除条件,这样就能保证软删除的查询条件是在真正查询的时候才附加上去。...从上面可以看出,Laravel的软删除,在关联关系中会造成一些查询上条件的歧义,非常容易产生bug.而且,belongsToMany中间表的问题是无解的。
这里写目录标题 1 数据软删除时保持字段值唯一性的问题 2 解决 1 数据软删除时保持字段值唯一性的问题 2 解决 对userinfo1表的name、status两个字段设置联合的唯一索引,在更新数据时把被软删除的数据行对应的...id值,赋值给status字段(status等于0表示未删除,非0表示已删除)。...① 对需要保持唯一的数据创建联合唯一索引 ② 软删除时status字段更新为该行数据的唯一值(也就是主键id)
记录一下关于laravel5的unique验证: 1、路由: Route::resource('/users', 'UsersController'); 2、Request: public function...public function edit(User $user) { return view('user.edit', [ 'user' = $user, ]); } 这样,在update数据时...,如果未修改email字段的值,将不会检测unique。...create时总是检测unique 以上这篇laravel5表单唯一验证的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考。
比如我们在新增一篇文章的时候,我们一般会写如下的表单验证。...,就是当我们的title没有发生改变的时候,我们使用unique的时候,会将原来的记录行进行扫描,这样就会提示我们该标题已经存在。...0); $this->validate($request, [ 'title' => "required|unique:article,id,{$id}|max:255", ]); 这样的话在验证唯一的时候就会不去验证...$info->title = $request->input("title"); if ($info->save()) { // 操作成功 } else { // 操作失败 } Laravel...真是最好的框架。
引言 上一节我们讲了通过模型方法新建条目,或者更新数据。对于写操作还有更为重要的一个方法, 就是数据的删除。删除数据,有物理删除和软删除的区别。 ?...我们从软删除的使用,再顺便说一说模型内的作用域的概念。 代码时间 常规的删除操作分两步进行,一步是把数据从数据库中查询出来,使用laravel模型的方法, 则返回的是一个模型对象。...所以引入了软删除的概念,就是在表内添加一个字段,用于标记,这一行条目是否算是删除状态。在laravel中, 这个软删除字段默认是 deleted_at。你也可以在模型中手动指定。...然后在模型中,引入软删除的功能,将其进行全局生效的使用。...写在最后 本文从laravel模型的写操作删除动作,讲到了软删除的概念。进而引申出来本地作用域和全局作用域的使用。软删除几乎贯穿了我们应用的始终,需要大家勤学苦练。
引言 本文说一个小的知识点,在表单验证中,对数组数据进行验证, 我们需要进行两项,一项是数组本身的验证,一项是数组元素的验证。 ?...明确了需求,我们发现上述的验证,laravel内置的规则基本可以解决。只是对于字段是数组,且数组长度满足某些条件的要求,有些苛刻。具体如何实现呢?...laravel表单验证规则中,使用星号,可以匹配数组的元素。...,前端使用VUE网络请求传递过来的数据,如何验证呢?...那么在laravel的验证器中,应该如何写呢? 这与指定了字段名的数组不同,这个数组的键是自动编排的数字,所以,我们需要通配键名。
,并调用传入的验证规则, 从而实现数据的初步筛选。...[img] 把数据验证,验证规则,和控制器的逻辑处理代码混合在一起,是不是有点怪怪的?我们说,一个中间层只做一件事情,这样才能松耦合,提高鲁棒性。 所以有了这篇文章,教你把数据验证提炼出来。...代码时间 laravel在请求相关的业务逻辑上设计的很灵活,你完全可以把验证流程从控制器方法中剥离出去, 这样你只需在相关的层面,专注于相关的逻辑就可以了。...} 其中 rules方法执行了需要执行的验证器的规则,laravel默认内置了很多常用规则,基本够用。...写在最后 本文深入laravel数据验证的方法,从特殊走向一般,并尝试把验证相关的代码从控制器内分离出来。使用自定义的请求体类,成功实现了代码的分离,而可控制性也更强了。
开发背景: 最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性...HAVING COUNT(brandName)>1 #条件是数量大于1的重复数据 ) 使用SQL删除多余的重复数据,并保留Id最小的一条唯一数据: 注意点: 错误SQL:DELETE FROM brand...“brand” 原因是:不能将直接查处来的数据当做删除数据的条件,我们应该先把查出来的数据新建一个临时表,然后再把临时表作为条件进行删除功能 正确SQL写法: DELETE FROM brand...Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName) t) 这句的意思其实就是,通过分组统计出数据库中不重复的最小数据id编号,让后通过...not in 去删除其他重复多余的数据。
本文实例讲述了Laravel框架自定义验证过程。...,即,我们可以手动确定表单提交到哪个控制器以及对应该控制器下的方法,所以接下来的问题就是如何使Laravel知道我们确定该用户已经通过了验证了。...($post_password,'PASSWORD_BCRYPT')处理,然后跟数据库中的存储值进行比较,相等则验证通过,不相等,则自然验证失败。...extends Model implements AuthenticatableContract { use Authenticatable, CanResetPassword; // 这个参数是关于软删除的...,如果你有软删除需要,那么你可以加上 // use SoftDeletes; }
:在User模型中添加roles() 、hasRole(name) 、can(permission) 以及ability(roles,permissions, 软删除 使用Entrust提供的迁移命令生成的关联关系表中默认使用了...如果你由于某种原因不能在数据库中使用级联删除,那么可以在EntrustRole 、EntrustPermission 类以及HasRole trait提供的事件监听器中手动删除关联表中的记录。...如果模型使用了软删除,那么当不小心误删除数据时,事件监听器将不会删除关联表数据。...不过,由于Laravel事件监听器的局限性,所以暂时无法区分是调用delete() 还是forceDelete() ,基于这个原因,在你删除一个模型之前,必须手动删除所有关联数据(除非你的数据表使用了级联删除...// 删除关联数据 $role- perms()- sync([]); // 删除关联数据 $role- forceDelete(); // 不管透视表是否有级联删除都会生效 总结 到此这篇关于使用
同时增加了简单的词法解析,以便支持函数式的验证器配置。 以下有一些新的验证器用到了这个大重构。 唯一性验证器 我原来是推崇用Excel自带的重复检查功能来检查重复数据。...首先是增加了 org.xresloader.field_unique_tag 插件,值是一个字符串,表示唯一性检测标签,可以出现多次。 对于相同唯一性检测标签的所有字段组合,只能出现一次。...(还包含一个唯一性检查报错): 数值范围验证器的增强 范围验证器的增强主要有两处,一处是支持 >数字 , >=数字 , <数字 , <=数字 这种格式的配置。...这可以有效的减少一些Excel误操作带来的空数据项。(比如漏删除空单元格,不小心设置了某个空数据行的单元格格式)。...这样对于一些经常加载的数据可以大幅减少IO和建索引的开销。 特别是有了自定义验证器以后。可以让用于验证的数据尽可能命中缓存。
简介 Laravel 内置的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据表都对应一个与该表进行交互的模型(Model),通过模型类,你可以对数据表进行查询...软删除 除了从数据库物理删除记录外,Eloquent 还可以对模型进行“软删除”。...当模型被软删除后,它们并没有真的从数据库删除,而是在模型上设置一个 deleted_at 属性并插入数据库,如果模型有一个非空 deleted_at 值,那么该模型已经被软删除了。...判断给定模型实例是否被软删除,可以使用 trashed 方法: if ($flight- trashed()) { // } 查询被软删除的模型 包含软删除模型 正如上面提到的,软删除模型将会自动从查询结果中排除...Laravel 自带的软删除功能就使用了全局作用域来从数据库中拉出所有没有被删除的模型。编写自定义的全局作用域可以提供一种方便的、简单的方式来确保给定模型的每个查询都有特定的条件约束。
引言 我们不止一次在系列文章中讲到模型的“软删除”功能,因为现实场景中为了保证数据可追溯,我们几乎不会对数据库进行物理删除。删除数据有可能会造成数据一致性的破坏,进而导致业务逻辑无法跑通。...所以,软删除的概念,极为重要。 本文我们仍然不厌其烦地讲解软删除的功能。 物理删除 其实就是真实地把数据从数据库条目清除,laravel模型提供了开箱即用的方法。...软删除 在许多情况下,你不会真正想要从数据库中删除记录,而是用一种不再在应用程序中显示它们的方式对其进行注释。这就是所谓的软删除。...Laravel本身支持软删除,只需要进行少量的配置更改,以确保在执行delete或destroy时,模型的记录不会被实际删除。作为一个例子,我们修改Event模型以支持软删除。...如果你在代码内要坚持查询全量数据,也包含软删除了的数据,那么代码这样写: $events = Event::withTrashed()->get(); 写在最后 本文我们有重温了laravel的模型软删除功能
本文实例讲述了Laravel5.1 框架模型软删除操作。...分享给大家供大家参考,具体如下: 软删除是比较实用的一种删除手段,比如说 你有一本账 有一笔记录你觉得不对给删了 过了几天发现不应该删除,这时候软删除的目的就实现了 你可以找到已经被删除的数据进行操作...(); } ↑ 当我们删了这条数据后 在数据表中的表示是 deleted_at 不为空 它是一个时间值,当delete_at不为空时 证明这条数据已经被软删除了。...2.3 判断数据是否被软删除 if ($article- trashed()){ echo '这个模型已经被软删除了'; } 2.4 查询到被软删除的数据 有一点需要注意,当数据被软删除后...,它和withTrashed的区别是 它只获得软删除的数据。
引言 laravel模型中引入了SoftDeletes这个全局作用域用于将数据库的条目 标记为删除,而实际上并不清除数据,这样可以为后续的数据恢复做铺垫。...本文就来说一说,如何检验一个数据条目是否被软删除了。 ?...,和自定义软删除字段的方法。...使用了软删除功能后,会在模型的查询方法上,默认追加 where deleted_at is null 那么如果使用了全量查询后,如何判断一个记录是否是已经软删除的呢?laravel提供了这些功能。...写在最后 本文通过对laravel模型中软删除的源码分析, 为大家展示了引入软删除功能,并自定义软删除标记字段的方法。通过模型提供的方法,进而判断记录是否已软删除。
说明 非常高效的处理laravel中curd的操作 安装 composer require shencongcong/laravel-curd ~1.0 laravel项目的 config/app.php...增加(add) // 增加数据处理如需要处理业务加上这段代码,默认将laravel的request请求中的数据传入(没有业务处理则省略) $arr = ['id'= 1,'name'= 'hlcc']...Test::class)- list($pageSize,$withTrashed); $pageSize 默认是0 不分页 2 表示每页展示2条 $withTrashed 默认是true, 表示软删除的不展示..., false 表示软删除的也展示出来 4....软删除恢复(restore) \LaravelCurd::make(Test::class)- restore(); github地址 以上就是本文的全部内容,希望对大家的学习有所帮助。
Asia/Shanghai', # 语言 'locale' => 'zh-CN', 配置数据库 首先确保安装好了 laravel,并且数据库连接设置正确。...(windows 和 linux 的软链接不一样不能直接复制!)...然后运行下面的命令来发布资源: 1 php artisan admin:publish 在该命令会生成配置文件config/admin.php,可以在里面修改安装的地址、数据库连接、以及表名,建议都是用默认配置不修改...事件允许你在一个指定模型类每次保存或更新的时候执行代码。 retrieved 事件会在从数据库中获取已存在模型时触发。当一个新模型被首次保存的时候,creating 和 created 事件会被触发。...添加后台验证码 依赖 php 扩展fileinfo 添加验证码 Media manager 1 2 composer require laravel-admin-ext/media-manager php
本文实例讲述了Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作。...//获取所有数据,会过滤掉delete_time不为null的记录(即软删除的记录不会显示) //注意,delete_time字段默认值要设置为null,不能设置为0,否则0页会被视为软删除过的数据 $...res = $model- select(); //如果需要获取包含软删除的数据,使用withTrashed(true)。...$res = User::withTrashed(true)- select(); //如果需要获取软删除过的数据 $res = User::onlyTrashed()- select(); //删除id...是15的记录,如果开启软删除,会进行假删除 $res = User::destroy(15); //如果开启了软删除,需要真正地删除数据,不做软删除 //destory()第二个参数传递true $res
说明 非常高效的处理laravel中curd的操作 安装 composer require shencongcong/laravel-curd ~1.0 laravel项目的 config/app.php...增加(add) // 增加数据处理如需要处理业务加上这段代码,默认将laravel的request请求中的数据传入(没有业务处理则省略) $arr = [‘id’=>1,’name’=>’hlcc’];...(list) \LaravelCurd::make(Test::class)->list( $pageSize 默认是0 不分页 2 表示每页展示2条 $withTrashed 默认是true, 表示软删除的不展示..., false 表示软删除的也展示出来 4....软删除恢复(restore) \LaravelCurd::make(Test::class)->restore(); 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
领取专属 10元无门槛券
手把手带您无忧上云