thinkphp复杂查询之数组混入字段比较
标题比较绕口,我也不知道该怎样表达才好。大概意思就是:thinkphp 中的SQL语句查询,用到数组作为查询条件后,如何添加比较字段查询。 thinkphp手册上,推荐使用数组形式来作查询,这样安全性很高。但是我却遇到一个问题,当用数组形式来进行比较,就无法进
标题比较绕口,我也不知道该怎样表达才好。大概意思就是:thinkphp 中的SQL语句查询,用到数组作为查询条件后,如何添加比较字段查询。
thinkphp手册上,推荐使用数组形式来作查询,这样安全性很高。但是我却遇到一个问题,当用数组形式来进行比较,就无法进行字段比较了,比较郁闷。代码如下:
首先,我需要的SQL语句是这样的。
select * from post where (id = '100') and (user_id = `user`.user_id)
在TP用数组写法是这样的
$sql = M('post') $map['id']??=?array('eq',100); $map['user_id']??=?array('eq','user.user_id'); $sql->where($map)->$sql;
生存的SQL语句会这样:
select * from post where (id = '100') and (user_id = 'user.user_id')
后部分的字段比较,因为多了单引号,变成一个比较字符串了。不是我想要的语句。
翻篇了thinkphp官网手册也没有找到解决方案,谷歌百度也没有找到。后来灵机一动,不清楚where是否可以重复写多次两次?将代码改成如下:
$sql = M('post') $map['id']??=?array('eq',100); $sql->where($map)->where('user_id = user.user_id')->$sql;
执行$sql->getlastsql();打印获得以下SQL:
select * from post where (id = '100') and (user_id = `user`.user_id)
噢!这正是我需要的SQL语句。看来where的确是可以重复调用的。
最后吐槽一下thinkphp手册,上面很多知识点都没有提及到。看着真的点有辛苦。还好这点辛苦是值得的。现在thinkphp用着很舒服。
原文地址:thinkphp复杂查询之数组混入字段比较, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP数组键值翻转方法性能对比表明:array_flip()函数在大型数组(超过100万个元素)下比for循环性能更优,耗时更短。手动翻转键值的for循环方法耗时相对较长。

PHP中深度复制数组的方法包括:使用json_decode和json_encode进行JSON编码和解码。使用array_map和clone进行深度复制键和值的副本。使用serialize和unserialize进行序列化和反序列化。

多维数组排序可分为单列排序和嵌套排序。单列排序可使用array_multisort()函数按列排序;嵌套排序需要递归函数遍历数组并排序。实战案例包括按产品名称排序和按销售量和价格复合排序。

PHP的array_group_by函数可根据键或闭包函数对数组中的元素分组,返回一个关联数组,其中键是组名,值是属于该组的元素数组。

在PHP中执行数组深度复制的最佳实践是:使用json_decode(json_encode($arr))将数组转换为JSON字符串,然后再将其转换回数组。使用unserialize(serialize($arr))将数组序列化为字符串,然后将其反序列化为新数组。使用RecursiveIteratorIterator迭代器对多维数组进行递归遍历。

PHP数组去重算法的复杂度:array_unique():O(n)array_flip()+array_keys():O(n)foreach循环:O(n^2)

PHP的array_group()函数可用于按指定键对数组进行分组,以查找重复元素。该函数通过以下步骤工作:使用key_callback指定分组键。可选地使用value_callback确定分组值。对分组元素进行计数并识别重复项。因此,array_group()函数对于查找和处理重复元素非常有用。

在Golang中,可通过以下方式比较自定义类型的值:对于具有相同底层表示形式的类型,直接使用==操作符进行比较。对于更复杂的类型,使用reflect.DeepEqual函数递归比较两个值的全部内容。
