版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/duringnone/article/details/79156912
关于ThinkPHP5.0.*版本的delete软删除的BUG问题
(ThinkPHP5.0.14暂时没有发现有使用change属性)
1 .错误信息,即报错页面如下:
在软删除的文件中缺少一个$change的属性,导致报错,change属性不存在,报错所在文件的路径,ThinkPHP5.0.*下的
thinkphp/library/traits/model/SoftDelete.php
报错文件(都是源码根目录下的think目录下)及行数
![](https://img-blog.csdn.net/20180124231639758?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHVyaW5nbm9uZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
报错的具体行数63行:
![这里写图片描述](https://img-blog.csdn.net/20180124232551001?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHVyaW5nbm9uZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
#####2 . 解决方法如下:(在trait模拟多继承SoftDelete中定义一个change属性,注意:数据类型一定要为空数组)
![这里写图片描述](https://img-blog.csdn.net/20180124232612875?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHVyaW5nbm9uZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
#####3 .关于软删除的具体用法,我上一篇博客中有介绍到软删除的相关使用和注意事项,以及示例, 或者可以参考手册(tp手册还是比较强大的,只是有时候某些功能之间存在冲突,需要注意手册中的提示信息)
4 . 注意点
1) ThinkPHp框架的源码Model类和SoftDelete类中都含有destroy和delete方法,其中destroy是静态方法,也就是说destroy只能被类调用,如:
特别提示:使用软删除之前必须在数据表对应的Model类中先引入 use traits\model\SoftDelete; [具体使用可参照我上一篇博客内容,在此不再重复]
关于destroy方法:
//硬删除
User::destroy(['id'=>1]); //调用的是Model中的destroy方法
//软删除
$user = User::get(['uid'=>1]); //调用的是SoftDelete中的destroy方法
$user->destroy();
关于delete方法:
//硬删除
User::delete(['id'=>1]); //调用的是Model中的destroy方法
//软删除
$user = User::get(['uid'=>1]); //调用的是SoftDelete中的delete方法
$user->delete();