最常用的也是最复杂的操作查询方法ThinkPHP豆腐是哪里的方法。那里的方法也属于一个模型类的相干操作方法,它主要用于查询的设置和操作条件。

的,方法是ThinkPHP查询语言的使用是ThinkPHP ORM(对象关系映射)本质上是一个重要的组成部分和关键,就可以完成的,包括普通的查询表达式查询,快速查询,范围查询,查询,查询操作的方法,在支持字符串和数组参数,虽然他们也可以用但不推荐。

1。字符串的情况

使用字符串条件直接查询和操作,例如:


用户= m(用户);
为用户>,(= 1和状态= 1)->选择();




最后生成的SQL语句是


SELECT * FROM think_user类型= 1和状态= 1




如果使用超过3.1个版本,当使用字符串条件时,建议与预处理机制合作,以确保更安全性,例如:


美元在模型>(ID = %d和用户名为% s XX =%F




或使用:


美元在模型>(ID = %d和用户名为% s XX =%F




如果$ id变量来自用户提交或URL地址,如果传入的非数字类型,它将被迫格式化查询后的数字格式。

字符串处理格式类型支持指定数字,字符串,等等,这可以通过将方法的参数描述。

2。阵列的条件

该阵列的条件在哪里使用ThinkPHP推荐使用。

一般查询

查询数组最简单的方法如下所示:


用户= m(用户);
合图{ 'name' } = 'thinkphp;
图'status'} {美元= 1;
传入的的查询查询方法
$用户>在哪里($ map)- >选择();




最后生成的SQL语句是


SELECT * FROM think_user哪里`名字` = 'thinkphp'and状态= 1




表达式查询

上面的查询条件只是一个简单而平等的判断。它可以使用查询表达式支持更多的SQL查询语法和查询表达式格式。


图1美元{ 'field } =阵列('表达','查询条件1);
图2美元{ 'field } =阵列('表达','查询条件2);
元模型>在哪里($ map)(>选择);支持




表达式不小,也支持下面的查询表达式,表达式的含义是:






表达
意义


情商
等于(=)。


利用
不等于(<)


GT
大于(>)


EGT
大于或等于(>)


书信电报
小于(<)


英语教学
小于或等于(<)



模糊查询


{不在两者之间
(非)区间查询


{不在
(不在)查询中



表达式查询,支持sql语法







示例如下:

情商:等于(=)

例如:


合图{ 'id' } =阵列('eq ',100);




相当于下面的查询


合图{ 'id' } = 100;




查询条件为id = 100。

级:不平等(<>)

例如:


合图{ 'id' } =阵列('neq ',100);




查询ID为< 100

gt大于(>)

例如:


合图{ 'id' } =阵列('gt ',100);




查询条件为id > 100

EGT:大于或等于(>)

例如:


合图{ 'id' } =阵列('egt ',100);




查询是id > = 100

小于(<)

例如:


合图{ 'id' } =阵列(这里',100);




查询条件为id < 100

小于或等于(<)

例如:


合图{ 'id' } =阵列('elt ',100);




查询是id 100。

{不喜欢:像用SQL

例如:


合图{ 'name' } =阵列(不是,'thinkphp %);




查询条件成为名like'thinkphp %

如果db_like_fields参数配置,一些领域也自动模糊查询,例如,可以设置:


db_like_fields= >标题|内容




的话,使用


$ {标题} = 'thinkphp地图;




查询条件成为名''%1 ThinkPHP %

支持数组方法,例如


$地图{'a' } =阵列(不是,阵列(% % % TP ThinkPHP,' '),);
合图{ B } =阵列('notlike,阵列(% % % TP ThinkPHP,' '),);




生成的查询条件如下:


(一个像% %或像ThinkPHP ''%1 TP)和(B不喜欢% ThinkPHP %)




{在SQL之间的{不}之间,查询条件支持字符串或数组,例如:


合图{ 'id' } =阵列('between ','1,8);




和下列等价物:


合图{ 'id' } =阵列('between,阵列(1,8));




查询条件变为1和8之间的id。

{在sql中:{不}:查询条件支持字符串或数组,例如:


合图{ 'id' } =阵列(不,'1,5,8);




和下列等价物:


合图{ 'id' } =阵列(不,阵列(1,5,8));




查询条件变得不在(1,5,8)

表达式:支持更复杂的查询条件

例如:


合图{ 'id' } =阵列(,'1,3,8);




可以改为:


合图{ 'id' } =阵列('exp ','(1,3,8));




查询的条件不会被视为字符串,因此下面的查询条件可以使用SQL支持的任何语法,包括使用函数和字段名。

查询表达式不仅可以用于查询条件,还可以用于数据更新,如:


用户= m(用户);
要修改的数据对象/属性分配
$data { 'name' } = 'thinkphp;
{ } = 'score美元数据的数组('exp ','score + 1 '); / /添加1个用户点
为用户>,(ID = 5)->保存($数据); / /根据修改后的数据保存条件




快速查询

WHERE方法支持快速查询方法,可以进一步简化查询条件的编写,例如:

1。为不同字段实现相同的查询条件


用户= m(用户);
图|标题'name美元{ } = 'thinkphp;
传入的的查询查询方法
$用户>在哪里($ map)- >选择();




查询条件为名称= 'thinkphp'or标题= 'thinkphp

两。实现不同字段的不同查询条件


用户= m(用户);
图'statustitle} = {美元阵列(1,'thinkphp ','_multi= >真的);
传入的的查询查询方法
$用户>在哪里($ map)- >选择();




_multi= >真的必须被添加到数组的末尾,这意味着目前的状况是多条件匹配,以便查询条件变得状态= 1标题= 'thinkphp ',和查询字段支持更多。


图'statusscoretitle} = {美元阵列(1,阵列('gt ','0'),'thinkphp ','_multi= >真的);




查询条件变得状态= 1和分数> 0和标题= 'thinkphp

注意:在同一时间使用而不是在|快速查询。

区间查询

WHERE方法支持字段的间隔查询,例如:


合图{ 'id' } =阵列(array('gt ',1),数组(这',10));




查询条件为:(id > 1)和(id < < 10)


合图{ 'id' } =阵列(array('gt ',3),数组(这',10),);




查询条件为:(id > 3)或(id < < 10)


合图{ 'id' } =阵列(array('neq ',6),数组('gt ',3),);




查询条件为:(id)!= 6)和(id> 3)

最后一个可以是a和OR运算符,如果不是,则默认是和操作。

区间查询的条件可以支持一个公共查询的所有表达式,也就是说,可以支持像GT、gt和表达式这样的表达式。此外,只要字段的条件可以一起写入,间隔查询也可以支持更多的条件:


合图{ 'name' } =数组(array('像',%一%)、阵列(像',' % B %)、阵列(不是,% %),'thinkphp);




最后的查询条件是:


(名称如%一%)或(名称喜欢% %)或(名称% % %)或




组合查询

组合查询用于复杂查询条件。如果在查询时偶尔需要使用字符串,并且不希望失去数组的灵活性,可以考虑组合查询的使用。

主查询或查询中使用一个数组,只需添加一些特殊的查询,包括查询字符串模式(_string)和化合物(_complex),查询字符串查询请求(_query)、特殊查询每个混合查询只能定义一个,因为使用数组索引的索引,查询相同的特殊将覆盖。

1。字符串模式查询(使用_string作为查询条件)

数组条件也可以与字符串条件混合使用,例如:


用户= m(用户);
合图{ 'id' } =阵列('neq ',1);
合图{ 'name' } =好;
图'_string} = {美元'status = 1和分数大于10;
$用户>在哪里($ map)- >选择();




最后的查询条件如下:


(id)!= 1)和(`名字` =好)和(状态= 1和评分>10)




两。请求字符串查询方法

请求字符串查询是一种类似于URL引用的方法,它支持简单的条件相等判断。


合图{ 'id' } =阵列(100 'gt ',');
图'_query} = {美元'status = 1score = 100_logic =或;




查询条件:` ID ` > 100(`状态` = '1'or `评分` = 100)

三、复合查询

复合查询等价于封装一个新的查询条件,然后合并到原始查询条件中,从而完成更复杂的查询条件组装。

例如:


在美元{ 'name' } =阵列(像',' % ThinkPHP %);
在{ } =美元标题数组(像',' % ThinkPHP %);
在'_logic } = { $;
图'_complex} = {美元,美元;
合图{ 'id' } =阵列('gt ',1);




查询条件


(ID > 1)和((名字像% ThinkPHP %)或(标题是ThinkPHP %))




复合查询使用_complex作为查询条件来定义,与前面的查询方法,可以做出更复杂的查询条件非常灵活。

许多查询方法可以相互转换,例如,上面的查询条件可以更改为:


在美元{ 'id' } =阵列('gt ',1);
在'_string } = {美元(名字像% ThinkPHP %)或(标题如% ThinkPHP);




最后的SQL语句是一致的。

三.调用许多次

自从3.1.3版本,哪里方法支持多电话,但字符串条件只能出现一次,例如:


$地图{'a' } =阵列('gt ',1);
在{ }美元B = 1;
在模型>美元(合图)->在($,)->在('status = 1)->选择();




多个数组条件表达式最终将合并,但只支持字符串条件一次。