## å¿«æ·æ¥è¯¢
å¿«æ·æ¥è¯¢æ¹å¼æ¯**ä¸ç§å¤å段ç¸åæ¥è¯¢æ¡ä»¶**çç®ååæ³ï¼å¯ä»¥è¿ä¸æ¥ç®åæ¥è¯¢æ¡ä»¶çåæ³ï¼å¨å¤ä¸ªå段ä¹é´ç¨`|`åå²è¡¨ç¤º`OR`æ¥è¯¢ï¼ç¨`&`åå²è¡¨ç¤º`AND`æ¥è¯¢ï¼å¯ä»¥å®ç°ä¸é¢çæ¥è¯¢ï¼ä¾å¦ï¼
~~~php
Db::table('think_user')
->where('name|title','like','thinkphp%')
->where('create_time&update_time','>',0)
->find();
~~~
çæçæ¥è¯¢SQLæ¯ï¼
~~~sql
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' OR `title` LIKE 'thinkphp%' ) AND ( `create_time` > 0 AND `update_time` > 0 ) LIMIT 1
~~~
> å¿«æ·æ¥è¯¢æ¯æææçæ¥è¯¢è¡¨è¾¾å¼ã
## æ¹éï¼å段ï¼æ¥è¯¢
å¯ä»¥è¿è¡å¤ä¸ªæ¡ä»¶çæ¹éæ¡ä»¶æ¥è¯¢å®ä¹ï¼ä¾å¦ï¼
~~~
Db::table('think_user')
->where([
['name', 'like', 'thinkphp%'],
['title', 'like', '%thinkphp'],
['id', '>', 0],
['status', '=', 1],
])
->select();
~~~
çæçSQLè¯å¥ä¸ºï¼
~~~sql
SELECT * FROM `think_user` WHERE `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' AND `id` > 0 AND `status` = '1'
~~~
æ°ç»æ¹å¼å¦æ使ç¨`exp`æ¥è¯¢çè¯ï¼ä¸å®è¦ç¨`raw`æ¹æ³ã
~~~
Db::table('think_user')
->where([
['name', 'like', 'thinkphp%'],
['title', 'like', '%thinkphp'],
['id', 'exp', Db::raw('>score')],
['status', '=', 1],
])
->select();
~~~
æ°ç»æ¥è¯¢æ¹å¼ï¼ç¡®ä¿ä½ çæ¥è¯¢æ°ç»ä¸è½è¢«ç¨æ·æ交æ°æ®æ§å¶ï¼ç¨æ·æ交ç表åæ°æ®åºè¯¥æ¯ä½ä¸ºæ¥è¯¢æ°ç»çä¸ä¸ªå
ç´ ä¼ å
¥ï¼å¦ä¸ï¼
~~~
Db::table('think_user')
->where([
['name', 'like', $name . '%'],
['title', 'like', '%' . $title],
['id', '>', $id],
['status', '=', $status],
])
->select();
~~~
>[danger] 注æï¼ç¸åçå段çå¤æ¬¡æ¥è¯¢æ¡ä»¶å¯è½ä¼å并ï¼å¦æå¸ææä¸ä¸ª`where`æ¹æ³éé¢çæ¡ä»¶åç¬å¤çï¼å¯ä»¥ä½¿ç¨ä¸é¢çæ¹å¼ï¼é¿å
被å
¶å®æ¡ä»¶å½±åã
~~~php
$map = [
['name', 'like', 'thinkphp%'],
['title', 'like', '%thinkphp'],
['id', '>', 0],
];
Db::table('think_user')
->where([ $map ])
->where('status',1)
->select();
~~~
çæçSQLè¯å¥ä¸ºï¼
~~~sql
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' AND `id` > 0 ) AND `status` = '1'
~~~
å¦æ使ç¨ä¸é¢çå¤ä¸ªæ¡ä»¶ç»å
~~~php
$map1 = [
['name', 'like', 'thinkphp%'],
['title', 'like', '%thinkphp'],
];
$map2 = [
['name', 'like', 'kancloud%'],
['title', 'like', '%kancloud'],
];
Db::table('think_user')
->whereOr([ $map1, $map2 ])
->select();
~~~
çæçSQLè¯å¥ä¸ºï¼
~~~sql
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' ) OR ( `name` LIKE 'kancloud%' AND `title` LIKE '%kancloud' )
~~~
> åç¨å¤ç»´æ°ç»æ¥è¯¢ï¼å¯ä»¥å¾æ¹ä¾¿çæ¼è£
åºåç§å¤æçSQLè¯å¥
## éå
æ¥è¯¢
~~~php
$name = 'thinkphp';
$id = 10;
Db::table('think_user')->where(function ($query) use($name, $id) {
$query->where('name', $name)
->whereOr('id', '>', $id);
})->select();
~~~
çæçSQLè¯å¥ä¸ºï¼
~~~sql
SELECT * FROM `think_user` WHERE ( `name` = 'thinkphp' OR `id` > 10 )
~~~
>[danger] å¯è§æ¯ä¸ªéå
æ¡ä»¶ä¸¤è¾¹ä¹ä¼èªå¨å ä¸æ¬å·ã
## æ··åæ¥è¯¢
å¯ä»¥ç»ååé¢æå°çæææ¹å¼è¿è¡æ··åæ¥è¯¢ï¼ä¾å¦ï¼
~~~
Db::table('think_user')
->where('name', 'like', 'thinkphp%')
->where(function ($query) {
$query->where('id', '<', 10);
})
->select();
~~~
çæçSQLè¯å¥æ¯ï¼
~~~sql
SELECT * FROM `think_user` WHERE `name` LIKE 'thinkphp%' AND ( `id` < 10 )
~~~
## å符串æ¡ä»¶æ¥è¯¢
对äºä¸äºå®å¨å¤æçæ¥è¯¢ï¼ä¹å¯ä»¥ç´æ¥ä½¿ç¨åçSQLè¯å¥è¿è¡æ¥è¯¢ï¼ä¾å¦ï¼
~~~
Db::table('think_user')
->whereRaw('id > 0 AND name LIKE "thinkphp%"')
->select();
~~~
为äºå®å
¨èµ·è§ï¼æ们å¯ä»¥å¯¹å符串æ¥è¯¢æ¡ä»¶ä½¿ç¨åæ°ç»å®ï¼ä¾å¦ï¼
~~~
Db::table('think_user')
->whereRaw('id > :id AND name LIKE :name ', ['id' => 0, 'name' => 'thinkphp%'])
->select();
~~~
## å¿«æ·æ¹æ³
ç³»ç»å°è£
äºä¸ç³»åå¿«æ·æ¹æ³ï¼ç¨äºç®åæ¥è¯¢ï¼å
æ¬ï¼
|æ¹æ³|ä½ç¨|
|---|---|
|`whereOr`|å段ORæ¥è¯¢|
|`whereXor`|å段XORæ¥è¯¢|
|`whereNull`|æ¥è¯¢å段æ¯å¦ä¸ºNull|
|`whereNotNull`|æ¥è¯¢å段æ¯å¦ä¸ä¸ºNull|
|`whereIn`|å段INæ¥è¯¢|
|`whereNotIn`|å段NOT INæ¥è¯¢|
|`whereBetween`|å段BETWEENæ¥è¯¢|
|`whereNotBetween`|å段NOT BETWEENæ¥è¯¢|
|`whereLike`|å段LIKEæ¥è¯¢|
|`whereNotLike`|å段NOT LIKEæ¥è¯¢|
|`whereExists`|EXISTSæ¡ä»¶æ¥è¯¢|
|`whereNotExists`|NOT EXISTSæ¡ä»¶æ¥è¯¢|
|`whereExp`|表达å¼æ¥è¯¢|
|`whereColumn`|æ¯è¾ä¸¤ä¸ªå段|
ä¸é¢ä¸¾ä¾è¯´æä¸ä¸¤ä¸ªå段æ¯è¾çæ¥è¯¢æ¡ä»¶`whereColumn`æ¹æ³çç¨æ³ã
æ¥è¯¢`update_time`大äº`create_time`çç¨æ·æ°æ®
~~~
Db::table('think_user')
->whereColumn('update_time','>','create_time')
->select();
~~~
çæçSQLè¯å¥æ¯ï¼
~~~
SELECT * FROM `think_user` WHERE ( `update_time` > `create_time` )
~~~
æ¥è¯¢`name`å`nickname`ç¸åçç¨æ·æ°æ®
~~~
Db::table('think_user')
->whereColumn('name','=','nickname')
->select();
~~~
çæçSQLè¯å¥æ¯ï¼
~~~
SELECT * FROM `think_user` WHERE ( `name` = `nickname` )
~~~
ç¸åå段æ¡ä»¶ä¹å¯ä»¥ç®å为
~~~
Db::table('think_user')
->whereColumn('name','nickname')
->select();
~~~
æ¯ææ°ç»æ¹å¼æ¯è¾å¤ä¸ªå段
~~~
Db::name('user')->whereColumn([
['title', '=', 'name'],
['update_time', '>=', 'create_time'],
])->select();
~~~
çæçSQLè¯å¥æ¯ï¼
~~~
SELECT * FROM `think_user` WHERE ( `name` = `nickname` AND `update_time` > `create_time` )
~~~
## å¨ææ¥è¯¢
æ¥è¯¢æé å¨è¿æä¾äºå¨ææ¥è¯¢æºå¶ï¼ç¨äºç®åæ¥è¯¢æ¡ä»¶ï¼å
æ¬ï¼
| å¨ææ¥è¯¢ | æè¿° |
| --- | --- |
|`whereFieldName`|æ¥è¯¢æ个å段çå¼|
|`whereOrFieldName`|æ¥è¯¢æ个å段çå¼|
| `getByFieldName` | æ ¹æ®æ个å段æ¥è¯¢ |
| `getFieldByFieldName` | æ ¹æ®æ个å段è·åæä¸ªå¼ |
å
¶ä¸`FieldName`表示æ°æ®è¡¨çå®é
å段å称ç驼峰æ³è¡¨ç¤ºï¼å设æ°æ®è¡¨`user`ä¸æ`email`å`nick_name`å段ï¼æ们å¯ä»¥è¿æ ·æ¥æ¥è¯¢ã
~~~
// æ ¹æ®é®ç®±ï¼emailï¼æ¥è¯¢ç¨æ·ä¿¡æ¯
$user = Db::table('user')
->whereEmail('thinkphp@qq.com')
->find();
// æ ¹æ®æµç§°ï¼nick_nameï¼æ¥è¯¢ç¨æ·
$email = Db::table('user')
->whereNickName('like', '%æµå¹´%')
->select();
// æ ¹æ®é®ç®±æ¥è¯¢ç¨æ·ä¿¡æ¯
$user = Db::table('user')
->getByEmail('thinkphp@qq.com');
// æ ¹æ®æµç§°ï¼nick_nameï¼æ¥è¯¢ç¨æ·ä¿¡æ¯
$user = Db::table('user')
->field('id,name,nick_name,email')
->getByNickName('æµå¹´');
// æ ¹æ®é®ç®±æ¥è¯¢ç¨æ·çæµç§°
$nickname = Db::table('user')
->getFieldByEmail('thinkphp@qq.com', 'nick_name');
// æ ¹æ®æµç§°ï¼nick_nameï¼æ¥è¯¢ç¨æ·é®ç®±
$email = Db::table('user')
->getFieldByNickName('æµå¹´', 'email');
~~~
> `getBy`å`getFieldBy`æ¹æ³åªä¼æ¥è¯¢ä¸æ¡è®°å½ï¼å¯ä»¥åå
¶å®çé¾å¼æ¹æ³æé
使ç¨
## æ¡ä»¶æ¥è¯¢
æ¥è¯¢æé å¨æ¯ææ¡ä»¶æ¥è¯¢ï¼ä¾å¦ï¼
~~~
Db::name('user')->when($condition, function ($query) {
// 满足æ¡ä»¶åæ§è¡
$query->where('score', '>', 80)->limit(10);
})->select();
~~~
并ä¸æ¯æä¸æ»¡è¶³æ¡ä»¶çåæ¯æ¥è¯¢
~~~
Db::name('user')->when($condition, function ($query) {
// 满足æ¡ä»¶åæ§è¡
$query->where('score', '>', 80)->limit(10);
}, function ($query) {
// ä¸æ»¡è¶³æ¡ä»¶æ§è¡
$query->where('score', '>', 60);
});
~~~
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿