## å
³èé¢è½½å
¥
å
³èæ¥è¯¢çé¢æ¥è¯¢è½½å
¥åè½ï¼ä¸»è¦è§£å³äº`N+1`次æ¥è¯¢çé®é¢ï¼ä¾å¦ä¸é¢çæ¥è¯¢å¦ææ3个记å½ï¼ä¼æ§è¡4次æ¥è¯¢ï¼
~~~
$list = User::select([1,2,3]);
foreach($list as $user){
// è·åç¨æ·å
³èçprofile模åæ°æ®
dump($user->profile);
}
~~~
å¦æ使ç¨å
³èé¢æ¥è¯¢åè½ï¼å°±å¯ä»¥åæ2次æ¥è¯¢ï¼å¯¹äºä¸å¯¹ä¸å
³èæ¥è¯´ï¼å¦æ使ç¨`withJoin`æ¹å¼åªæä¸æ¬¡æ¥è¯¢ï¼ï¼æææé«æ§è½ã
~~~
$list = User::with(['profile'])->select([1,2,3]);
foreach($list as $user){
// è·åç¨æ·å
³èçprofile模åæ°æ®
dump($user->profile);
}
~~~
æ¯æé¢è½½å
¥å¤ä¸ªå
³èï¼ä¾å¦ï¼
~~~
$list = User::with(['profile', 'book'])->select([1,2,3]);
~~~
>[danger] `with`æ¹æ³åªè½è°ç¨ä¸æ¬¡ï¼è¯·ä¸è¦å¤æ¬¡è°ç¨ï¼å¦æéè¦å¯¹å¤ä¸ªå
³è模åé¢è½½å
¥ä½¿ç¨æ°ç»å³å¯ã
ä¹å¯ä»¥æ¯æåµå¥é¢è½½å
¥ï¼ä¾å¦ï¼
~~~
$list = User::with(['profile.phone'])->select([1,2,3]);
foreach($list as $user){
// è·åç¨æ·å
³èçphone模å
dump($user->profile->phone);
}
~~~
æ¯æ使ç¨æ°ç»æ¹å¼å®ä¹åµå¥é¢è½½å
¥ï¼ä¾å¦ä¸é¢çé¢è½½å
¥è¦åæ¶è·åç¨æ·ç`Profile`å
³è模åç`Phone`ã`Job`å`Img`åå
³è模åæ°æ®ï¼
~~~
$list = User::with(['profile'=>['phone','job','img']])->select([1,2,3]);
foreach($list as $user){
// è·åç¨æ·å
³è
dump($user->profile->phone);
dump($user->profile->job);
dump($user->profile->img);
}
~~~
å¦æè¦æå®å±æ§æ¥è¯¢ï¼å¯ä»¥ä½¿ç¨ï¼
~~~
$list = User::field('id,name')->with(['profile' => function($query){
$query->field('user_id,email,phone');
}])->select([1,2,3]);
foreach($list as $user){
// è·åç¨æ·å
³èçprofile模åæ°æ®
dump($user->profile);
}
~~~
>[danger] è®°å¾æå®å±æ§çæ¶åä¸å®è¦å
å«å
³èé®ã
对äºä¸å¯¹å¤å
³èæ¥è¯´ï¼å¦æéè¦è®¾ç½®è¿åçå
³èæ°æ®æ°éï¼å¯ä»¥ä½¿ç¨`withLimit`æ¹æ³ã
```
Article::with(['comments' => function(Relation $query) {
$query->order('create_time', 'desc')->withLimit(3);
}])->select();
```
>[danger] 注æè¿éçç±»å约æå¿
é¡»ä½¿ç¨ `think\model\Relation`ï¼å 为`withLimit`æ¹æ³æ¯å
³èç±»ææçæ¹æ³
å
³èé¢è½½å
¥å称æ¯å
³èæ¹æ³åï¼æ¯æä¼ å
¥æ¹æ³åçå°ååä¸å线å®ä¹æ¹å¼ï¼ä¾å¦å¦æå
³èæ¹æ³åæ¯`userProfile`å`userBook`çè¯ï¼
~~~
$list = User::with(['userProfile','userBook'])->select([1,2,3]);
~~~
åä¸é¢çæ¹æ³æ¯çæçï¼
~~~
$list = User::with(['user_profile','user_book'])->select([1,2,3]);
~~~
åºå«å¨äºä½ è·åå
³èæ°æ®çæ¶åå¿
é¡»åä¼ å
¥çå
³èå称ä¿æä¸è´ã
~~~
$user = User::with(['userProfile'])->find(1);
dump($user->userProfile);
$user = User::with(['user_profile'])->find(1);
dump($user->user_profile);
~~~
ä¸å¯¹ä¸å
³èé¢è½½å
¥æ¯æ两ç§æ¹å¼ï¼`JOIN`æ¹å¼ï¼ä¸æ¬¡æ¥è¯¢ï¼å`IN`æ¹å¼ï¼ä¸¤æ¬¡æ¥è¯¢ï¼é»è®¤æ¹å¼ï¼ï¼å¦æè¦ä½¿ç¨`JOIN`æ¹å¼å
³èé¢è½½å
¥ï¼å¯ä»¥ä½¿ç¨`withJoin`æ¹æ³ã
~~~
$list = User::withJoin(['profile' => function(Relation $query){
$query->withField('truename,email');
}])->select([1,2,3]);
~~~
## 延è¿é¢è½½å
¥
æäºæ
åµä¸ï¼éè¦æ ¹æ®æ¥è¯¢åºæ¥çæ°æ®æ¥å³å®æ¯å¦éè¦ä½¿ç¨å
³èé¢è½½å
¥ï¼å½ç¶å
³èæ¥è¯¢æ¬èº«å°±è½è§£å³è¿ä¸ªé®é¢ï¼å 为å
³èæ¥è¯¢æ¯æ°æ§çï¼ä¸è¿ç¨é¢è½½å
¥ççç±ä¹å¾ææ¾ï¼æ§è½å
·æä¼å¿ã
延è¿é¢è½½å
¥ä»
é对å¤ä¸ªæ°æ®çæ¥è¯¢ï¼å 为å个æ°æ®çæ¥è¯¢ç¨å»¶è¿é¢è½½å
¥åå
³èæ°æ§æ¥è¯¢æ²¡æä»»ä½åºå«ï¼æ以ä¸éè¦ä½¿ç¨å»¶è¿é¢è½½å
¥ã
å¦æä½ çæ°æ®éæ¥è¯¢è¿åçæ¯æ°æ®é对象ï¼å¯ä»¥ä½¿ç¨è°ç¨æ°æ®é对象ç`load`å®ç°å»¶è¿é¢è½½å
¥ï¼
~~~
// æ¥è¯¢æ°æ®é
$list = User::select([1,2,3]);
// 延è¿é¢è½½å
¥
$list->load(['cards']);
foreach($list as $user){
// è·åç¨æ·å
³èçcard模åæ°æ®
dump($user->cards);
}
~~~
## å
³èé¢è½½å
¥ç¼å
å
³èé¢è½½å
¥å¯ä»¥æ¯ææ¥è¯¢ç¼åï¼ä¾å¦ï¼
~~~
$list = User::with(['profile'])->withCache(30)->select([1,2,3]);
~~~
表示对å
³èæ°æ®ç¼å30ç§ã
å¦æä½ æå¤ä¸ªå
³èæ°æ®ï¼ä¹å¯ä»¥ä»
ä»
ç¼åé¨åå
³è
~~~
$list = User::with(['profile', 'book'])->withCache(['profile'],30)->select([1,2,3]);
~~~
对äºå»¶è¿é¢è½½å
¥æ¥è¯¢çè¯ï¼å¯ä»¥å¨ç¬¬äºä¸ªåæ°ä¼ å
¥ç¼ååæ°ã
```
// æ¥è¯¢æ°æ®é
$list = User::select([1,2,3]);
// 延è¿é¢è½½å
¥
$list->load(['cards'], 30);
```
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- 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
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿