模型删除
应用软删除
表中需要有字段,deletetime
模型中使用下面方法
use SoftDelete;
protected $deleteTime = 'delete_time';
真实删除
// 软删除
User::destroy(1);
// 真实删除
User::destroy(1,true);
$user = User::get(1);
// 软删除
$user->delete();
// 真实删除
$user->delete(true);
EXP复杂查询
thinkphp的exp语句,支持复杂的查询条件
还要其他的复杂查询涵盖了mysql所有的复杂查询
https://www.kancloud.cn/manual/thinkphp5/135182
$list=$list->where('','exp', "instr(CONCAT( ',', tags, ',' ), ',".$tags.",' )");//查找那些tags字段中包含特定$tags值的记录
where(‘’,‘’, ‘exp’, …):这里,前两个参数为空字符串,是因为在使用exp时,通常不需要指定字段名和值,自定义的SQL表达式会直接用于构建条件。
"instr(CONCAT( ',', tags, ',' ), ',".$tags.",' )"
这部分是自定义的SQL表达式,其作用是检查tags字段值中是否包含某个特定的标签(由变量$tags表示)。
CONCAT( ',', tags, ',' )
这个函数将tags字段值前后各加上逗号,例如,如果tags原值为"tag1,tag2,tag3",则处理后变为",tag1,tag2,tag3,"。这样做的目的是为了方便使用instr函数检查子串是否存在,无论$tags是要查找的标签位于值的开始、中间还是结束,都能准确匹配。
instr(..., ',".$tags.",' )
instr函数用于查找子串位置,它在这里检查刚才构造的带有逗号的字符串中是否包含形如," t a g s " , 的模式,即 tags",的模式,即 tags",的模式,即tags前后各有一个逗号。如果找到匹配项,则返回子串起始位置,否则返回0。在ThinkPHP的上下文中,只要instr的结果不为0,就认为条件满足,即tags字段包含了指定的$tags值。
这里使用原生的sql查询
select * from fa-todo where instr(CONCAT( ',', tags, ',' ), ’,4,‘)
这里是可以正常运行的,查询数据表中是否有tags字段汉语4的数据
tp5中save和update的区别
model->where(id,id)->save
这里用了where模型查询会变成query查询,不能再用save
所以改成update能使用