å¦æåºç¨éè¦ä½¿ç¨æ°æ®åºï¼å¿
é¡»é
ç½®æ°æ®åºè¿æ¥ä¿¡æ¯ï¼æ°æ®åºçé
ç½®æ件æå¤ç§å®ä¹æ¹å¼ã
## é
ç½®æ件
å¨å
¨å±æè
åºç¨é
ç½®ç®å½ï¼ä¸æ¸
æ¥é
ç½®ç®å½ä½ç½®çè¯åèé
ç½®ç« èï¼ä¸é¢ç`database.php`ä¸ï¼åé¢ç»ç§°ä¸ºæ°æ®åºé
ç½®æ件ï¼é
ç½®ä¸é¢çæ°æ®åºåæ°ï¼
~~~
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
// æ°æ®åºç±»å
'type' => 'mysql',
// æå¡å¨å°å
'hostname' => '127.0.0.1',
// æ°æ®åºå
'database' => 'thinkphp',
// æ°æ®åºç¨æ·å
'username' => 'root',
// æ°æ®åºå¯ç
'password' => '',
// æ°æ®åºè¿æ¥ç«¯å£
'hostport' => '',
// æ°æ®åºè¿æ¥åæ°
'params' => [],
// æ°æ®åºç¼ç é»è®¤éç¨utf8
'charset' => 'utf8',
// æ°æ®åºè¡¨åç¼
'prefix' => 'think_',
],
],
];
~~~
æ°çéç¨å¤ç±»åçæ¹å¼é
ç½®ï¼æ¹ä¾¿åæ¢æ°æ®åºã
`default`é
ç½®ç¨äºè®¾ç½®é»è®¤ä½¿ç¨çæ°æ®åºè¿æ¥é
ç½®ã
`connections`é
ç½®å
·ä½çæ°æ®åºè¿æ¥ä¿¡æ¯ï¼`default`é
ç½®åæ°å®ä¹çè¿æ¥é
ç½®å¿
é¡»è¦åå¨ã
`type`åæ°ç¨äºæå®æ°æ®åºç±»å
| type | æ°æ®åº |
| --- | --- |
| mysql | MySQL |
| sqlite | SqLite |
| pgsql | PostgreSQL|
| sqlsrv | SqlServer |
|mongo|MongoDb|
|oracle|Oracle|
æ¯ä¸ªåºç¨å¯ä»¥è®¾ç½®ç¬ç«çæ°æ®åºè¿æ¥åæ°ï¼é常ç´æ¥æ´æ¹`default`åæ°å³å¯ï¼
~~~
return [
'default' => 'admin',
];
~~~
### è¿æ¥åæ°
å¯ä»¥é对ä¸åçè¿æ¥éè¦æ·»å æ°æ®åºçè¿æ¥åæ°ï¼å
·ä½çè¿æ¥åæ°å¯ä»¥åèPHPæåï¼ï¼å
ç½®éç¨çåæ°å
æ¬å¦ä¸ï¼
~~~
PDO::ATTR_CASE => PDO::CASE_NATURAL,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::ATTR_EMULATE_PREPARES => false,
~~~
å¨æ°æ®åºé
ç½®æ件ä¸è®¾ç½®ç`params`åæ°ä¸çè¿æ¥é
ç½®å°ä¼åå
ç½®ç设置åæ°å并ï¼å¦æéè¦ä½¿ç¨é¿è¿æ¥ï¼å¹¶ä¸è¿åæ°æ®åºçå°åååï¼å¯ä»¥å¨æ°æ®åºé
ç½®æ件ä¸å¢å ä¸é¢çå®ä¹ï¼
~~~
'params' => [
\PDO::ATTR_PERSISTENT => true,
\PDO::ATTR_CASE => \PDO::CASE_LOWER,
],
~~~
> ä½ å¯ä»¥å¨`params`åæ°éé¢é
置任ä½PDOæ¯æçè¿æ¥åæ°ã
## åæ¢è¿æ¥
æ们å¯ä»¥å¨æ°æ®åºé
ç½®æ件ä¸å®ä¹å¤ä¸ªè¿æ¥ä¿¡æ¯
~~~
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
// æ°æ®åºç±»å
'type' => 'mysql',
// æå¡å¨å°å
'hostname' => '127.0.0.1',
// æ°æ®åºå
'database' => 'thinkphp',
// æ°æ®åºç¨æ·å
'username' => 'root',
// æ°æ®åºå¯ç
'password' => '',
// æ°æ®åºè¿æ¥ç«¯å£
'hostport' => '',
// æ°æ®åºè¿æ¥åæ°
'params' => [],
// æ°æ®åºç¼ç é»è®¤éç¨utf8
'charset' => 'utf8',
// æ°æ®åºè¡¨åç¼
'prefix' => 'think_',
],
'demo' => [
// æ°æ®åºç±»å
'type' => 'mysql',
// æå¡å¨å°å
'hostname' => '127.0.0.1',
// æ°æ®åºå
'database' => 'demo',
// æ°æ®åºç¨æ·å
'username' => 'root',
// æ°æ®åºå¯ç
'password' => '',
// æ°æ®åºè¿æ¥ç«¯å£
'hostport' => '',
// æ°æ®åºè¿æ¥åæ°
'params' => [],
// æ°æ®åºç¼ç é»è®¤éç¨utf8
'charset' => 'utf8',
// æ°æ®åºè¡¨åç¼
'prefix' => 'think_',
],
],
];
~~~
æ们å¯ä»¥è°ç¨`Db::connect`æ¹æ³å¨æé
ç½®æ°æ®åºè¿æ¥ä¿¡æ¯ï¼ä¾å¦ï¼
~~~php
\think\facade\Db::connect('demo')
->table('user')
->find();
~~~
>[danger] `connect`æ¹æ³å¿
é¡»å¨æ¥è¯¢çæå¼å§è°ç¨ï¼èä¸å¿
须紧è·çè°ç¨æ¥è¯¢æ¹æ³ï¼å¦åå¯è½ä¼å¯¼è´é¨åæ¥è¯¢å¤±ææè
ä¾ç¶ä½¿ç¨é»è®¤çæ°æ®åºè¿æ¥ã
å¨æè¿æ¥æ°æ®åºç`connect`æ¹æ³ä»
对å½æ¬¡æ¥è¯¢ææã
>[danger] è¿ç§æ¹å¼çå¨æè¿æ¥ååæ¢æ°æ®åºæ¯è¾æ¹ä¾¿ï¼ç»å¸¸ç¨äºå¤æ°æ®åºè¿æ¥çåºç¨éæ±ã
## 模åç±»å®ä¹
å¦ææ个模åç±»éé¢å®ä¹äº`connection`å±æ§çè¯ï¼å该模åæä½çæ¶åä¼èªå¨æç
§ç»å®çæ°æ®åºé
ç½®è¿è¡è¿æ¥ï¼èä¸æ¯é
ç½®æ件ä¸è®¾ç½®çé»è®¤è¿æ¥ä¿¡æ¯ï¼ä¾å¦ï¼
~~~
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
protected $connection = 'demo';
}
~~~
> éè¦æ³¨æçæ¯ï¼ThinkPHPçæ°æ®åºè¿æ¥æ¯æ°æ§çï¼æ以并ä¸æ¯å¨å®ä¾åçæ¶åå°±è¿æ¥æ°æ®åºï¼èæ¯å¨æå®é
çæ°æ®æä½çæ¶åæä¼å»è¿æ¥æ°æ®åºã
## é
ç½®åæ°åè
ä¸é¢æ¯é»è®¤æ¯æçæ°æ®åºè¿æ¥ä¿¡æ¯ï¼
| åæ°å | æè¿° | é»è®¤å¼ |
| --- | --- | --- |
| type | æ°æ®åºç±»å | æ |
| hostname | æ°æ®åºå°å | 127.0.0.1 |
| database | æ°æ®åºå称 | æ |
| username | æ°æ®åºç¨æ·å | æ |
| password | æ°æ®åºå¯ç | æ |
| hostport | æ°æ®åºç«¯å£å· | æ |
| dsn | æ°æ®åºè¿æ¥dsnä¿¡æ¯ | æ |
| params | æ°æ®åºè¿æ¥åæ° | 空 |
| charset | æ°æ®åºç¼ç | utf8 |
| prefix | æ°æ®åºç表åç¼ | æ |
| deploy | æ°æ®åºé¨ç½²æ¹å¼:0 éä¸å¼(åä¸æå¡å¨),1 åå¸å¼(主ä»æå¡å¨) | 0 |
| rw\_separate | æ°æ®åºè¯»åæ¯å¦å离 主ä»å¼ææ | false |
| master\_num | 读åå离å 主æå¡å¨æ°é | 1 |
| slave\_no | æå®ä»æå¡å¨åºå· | æ |
| fields\_strict | æ¯å¦ä¸¥æ ¼æ£æ¥å段æ¯å¦åå¨ | true |
| fields_cache | æ¯å¦å¼å¯å段ç¼å | false|
|schema_cache_path|å段ç¼åç®å½|æ |
|trigger_sql|æ¯å¦å¼å¯SQLçå¬|true|
| auto\_timestamp | èªå¨åå
¥æ¶é´æ³å段 | false |
| query | æå®æ¥è¯¢å¯¹è±¡ | think\\db\\Query |
常ç¨æ°æ®åºè¿æ¥åæ°ï¼`params`ï¼å¯ä»¥åè[PHPå¨çº¿æå](http://php.net/manual/zh/pdo.constants.php)ä¸ç以`PDO::ATTR_`å¼å¤´ç常éã
å¦æåæ¶å®ä¹äº åæ°åæ°æ®åºè¿æ¥ä¿¡æ¯ å dsnä¿¡æ¯ï¼åä¼ä¼å
使ç¨dsnä¿¡æ¯ã
>[danger] å¦ææ¯ä½¿ç¨`pgsql`æ°æ®åºé©±å¨çè¯ï¼è¯·å
导å
¥ `thinkphp/library/think/db/connector/pgsql.sql`æ件å°æ°æ®åºæ§è¡ã
## æ线éè¿
å¦æä½ ä½¿ç¨çæ¯é¿è¿æ¥æè
å½ä»¤è¡ï¼å¨è¶
åºä¸å®æ¶é´åï¼æ°æ®åºè¿æ¥ä¼æå¼ï¼è¿ä¸ªæ¶åä½ éè¦å¼å¯æ线éè¿æè½ç¡®ä¿åºç¨ä¸ä¸æã
å¨æ°æ®åºè¿æ¥é
ç½®ä¸è®¾ç½®ï¼
~~~
// å¼å¯æ线éè¿
'break_reconnect' => true,
~~~
å¼å¯åï¼ç³»ç»ä¼èªå¨å¤ææ°æ®åºæ线并å°è¯éæ°è¿æ¥ã大å¤æ°æ
åµä¸é½è½èªå¨è¯å«ï¼å¦æå¨ä¸äºç¹æ®çæ
åµä¸æè
æäºæ°æ®åºé©±å¨çæ线æ è¯é误è¿æ²¡æå®ä¹ï¼æ¯æé
ç½®ä¸é¢çä¿¡æ¯ï¼
~~~
// æ线æ è¯å符串
'break_match_str' => [
'error with',
],
~~~
å¨ `break_match_str`é
ç½®ä¸å å
¥ä½ çæ°æ®åºé误信æ¯å
³é®è¯ã
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- 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
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿