简介

tp5.x 提供了丰富的数据模型和数据库操作的方法,只要涉及 think\Model think\Query等,其中有一个软删除的 feature,可以指定字段$deleteTime来标记 record 是否删除。这个字段使用 NULL 来判断 record 有没有被标记。如果在标记为软删除下情况下,要恢复标记为删除的 record 就不能用 update save 了,因为如果你直接赋值 (PHP)null,这个字段就会被忽略, 不会对数据库的这个字段进行操作,SO fuck it.

其实在where方法中提供了操作为exp的形式

$user = new User;
$user->where('delete_time', 'exp', 'is not null')->field(true)-select();
#来选择没有被删除的 records

但是 update()save() 都是不支持 exp操作的,例如下面的操作都不可行

$ok = $user->where('id',$id)->update(['delete_time' => ['exp', 'NULL']]); # not working, returns 0
$ok = $user->where('id',$id)->update(['delete_time' => null]]); # omitted, returns 0
$ok = $user->where('id',$id)->update(['delete_time' => 'NULL']); # not working, returns 0

所有使用 think\Db类来对数据表直接操作,而不是基于模型来操作。

use think\Db;

# in Class
$ok = Db::table('ox_sliders') ->where('file_sha', $sha)->update(['delete_time' => ['exp','null'],]);
# now $ok is assigned to the number of rows that has been affected by this query.
# return 1, in my case

fuck it

  • tp版本为5.0.3
  • column 不能类型转换
  • ->data() 不能类型转换
  • ->save(),->update(),->data() 不支持 null 赋值

More

  • 如果你是新增数据,直接把 field 设置为default NULL
alert table table_name modify `delete_time` timestamp default null;

thinkPHP5.x 更新字段为 NULL的更多相关文章

  1. mybatis-puls 字段为null时候的更新问题

    在mybatis-puls重设置的全局更新策略 为null的字段忽略更新.但是在某些业务需求下面,可能需要某些字段更新为null值.那么改如何设置 1, 在你的实体属性上面单独添加需要更新nu l l ...

  2. mybatis plus 更新字段的时候设置为 null 后不生效

    mybatis plus 将属性设置为 null 值会被忽略,最终生成的 sql 中不会有 set field = null(可能是某些情况) mybatis-plus 更新字段的时候设置为 null ...

  3. SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间

    --更新字段为随机时间 86400秒=1天 UPDATE dl_robot ), ,GETDATE()) )   SQL存在一个表而不在另一个表中的数据   方法一 使用 not in ,容易理解,效 ...

  4. DB中字段为null,为空,为空字符串,为空格要怎么过滤取出有效值

      比如要求取出微信绑定的,没有解绑的 未绑定,指定字段为null 绑定的,指定字段为某个字符串 解绑的,有的客户用的是更新指定字段为1,有的客户更新指定字段为‘1’ 脏数据的存在,比如该字段为空字符 ...

  5. django字段设置null和blank的区别

    null 这个选项跟数据库有关. null=True的话,数据库中该字段是NULL,即允许空值:null=False(默认)的话,数据库中该字段是NOT NULL,即不允许空值. blank 这个选项 ...

  6. C# 实体类转json数据过滤掉字段为null的字段

    C# 实体类转json数据过滤掉字段为null的字段 语法如下: var jsonSetting = new JsonSerializerSettings {NullValueHandling = N ...

  7. mysql更新字段值提示You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode

    1 引言 当更新字段缺少where语句时,mysql会提示一下错误代码: Error Code: 1175. You are using safe update mode and you tried ...

  8. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  9. mysql查询字段为null 返回0

    SELECT   IF(AVG(字段) IS NULL,0, 字段) as 重命名   From  xxx

随机推荐

  1. C++标准库 -- tuple

    头文件:<tuple> 可访问属性: 无(用get方法来访问数据) 可访问方法: swap(tuple) 和另外一个tuple交换值 其他相关方法: swap(t1, t2) 交换两个tu ...

  2. ThinkPHP 3.2.3 加减乘法验证码类

    ThinkPHP 3.2.3 自带的验证码类位于 /ThinkPHP/Library/Think/Verify.class.php,字体文件位于 /ThinkPHP/Library/Think/Ver ...

  3. 关于iis8.5中发布的网站无法连接数据库的解决方案。

    发布的网站在浏览时出现如下提示: “/”应用程序中的服务器错误. 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL ...

  4. Struts2 OGNL 自动转换Date类型的一些注意事项

    Strut2 有比较完善的使用OGNL的jsp标签自动转化为对应的后台对象的功能. 这里java.util.Date的自动转化有一些需要注意的地方(局部转换): 1.必须要在struts的xml文件中 ...

  5. MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013548.html 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置 ...

  6. Xcode使用HTTP配置

    Xcode7 出现获取网络请求时出现如下异常: App Transport Security has blocked a cleartext HTTP (http://) resource load ...

  7. ORA-03113: end-of-file on communication channel

    导致的原因,可能是异常断电导致文件状态不一致. SQL> startupORACLE instance started. Total System Global Area 1653518336 ...

  8. Issue 7: 网络in action

    网络运维基础 基础参数 配置:IP,子网掩码,网关,dns服务器,dhcp服务器 基础应用 在网关设置上搭建VPN组网 改host文件 单台主机原则上只能配置一个网关 协议 协议是全球都遵守的一套编码 ...

  9. NGINX、PHP-FPM开机自动启动

    NGINX SHELL脚本   放到/etc/init.d/下取名nginx #!/bin/sh # # nginx - this script starts and stops the nginx ...

  10. C# 获取汉字拼音首字母

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...