## å¤å¯¹å¤å
³è
## å
³èå®ä¹
ä¾å¦ï¼æ们çç¨æ·åè§è²å°±æ¯ä¸ç§å¤å¯¹å¤çå
³ç³»ï¼æ们å¨`User`模åå®ä¹å¦ä¸ï¼
~~~
<?php
namespace app\model;
use think\Model;
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class, 'access');
}
}
~~~
`belongsToMany`æ¹æ³çåæ°å¦ä¸ï¼
>[info] ### belongsToMany('å
³è模å','ä¸é´è¡¨','å¤é®','å
³èé®');
* **å
³è模å**ï¼å¿
é¡»ï¼ï¼å
³è模åç±»å
* **ä¸é´è¡¨**ï¼é»è®¤è§åæ¯å½å模åå+`_`+å
³è模åå ï¼å¯ä»¥æå®æ¨¡ååï¼
* **å¤é®**ï¼ä¸é´è¡¨çå½å模åå¤é®ï¼é»è®¤çå¤é®åè§åæ¯å
³è模åå+`_id`
* **å
³èé®**ï¼ä¸é´è¡¨çå½å模åå
³èé®åï¼é»è®¤è§åæ¯å½å模åå+`_id`
ä¸é´è¡¨åæ éæ·»å 表åç¼ï¼å¹¶æ¯æå®ä¹ä¸é´è¡¨æ¨¡åï¼ä¾å¦ï¼
~~~
public function roles()
{
return $this->belongsToMany(Role::class, Access::class);
}
~~~
ä¸é´è¡¨æ¨¡åç±»å¿
须继æ¿`think\model\Pivot`ï¼ä¾å¦ï¼
~~~
<?php
namespace app\model;
use think\model\Pivot;
class Access extends Pivot
{
protected $autoWriteTimestamp = true;
}
~~~
ä¸é´è¡¨æ¨¡åçåºç±»`Pivot`é»è®¤å
³éäºæ¶é´æ³èªå¨åå
¥ï¼ä¸é¢çä¸é´è¡¨æ¨¡ååå¼å¯äºæ¶é´æ³å段èªå¨åå
¥ã
### å
³èæ¥è¯¢
æ们å¯ä»¥éè¿ä¸é¢çæ¹å¼è·åå
³èæ°æ®
~~~php
$user = User::find(1);
// è·åç¨æ·çææè§è²
$roles = $user->roles;
foreach ($roles as $role) {
// è¾åºç¨æ·çè§è²å
echo $role->name;
// è·åä¸é´è¡¨æ¨¡å
dump($role->pivot);
}
~~~
### å
³èæ°å¢
~~~
$user = User::find(1);
// ç»ç¨æ·å¢å 管çåæé ä¼èªå¨åå
¥è§è²è¡¨åä¸é´è¡¨æ°æ®
$user->roles()->save(['name'=>'管çå']);
// æ¹éææ
$user->roles()->saveAll([
['name'=>'管çå'],
['name'=>'æä½å'],
]);
~~~
åªæ°å¢ä¸é´è¡¨æ°æ®ï¼è§è²å·²ç»æåå建å®æï¼ï¼å¯ä»¥ä½¿ç¨
~~~php
$user = User::find(1);
// ä»
å¢å 管çåæéï¼å设管çåçè§è²IDæ¯1ï¼
$user->roles()->save(1);
// æè
$role = Role::find(1);
$user->roles()->save($role);
// æ¹éå¢å å
³èæ°æ®
$user->roles()->saveAll([1,2,3]);
~~~
åç¬æ´æ°ä¸é´è¡¨æ°æ®ï¼å¯ä»¥ä½¿ç¨ï¼
~~~
$user = User::find(1);
// å¢å å
³èçä¸é´è¡¨æ°æ®
$user->roles()->attach(1);
// ä¼ å
¥ä¸é´è¡¨çé¢å¤å±æ§
$user->roles()->attach(1,['remark'=>'test']);
// å é¤ä¸é´è¡¨æ°æ®
$user->roles()->detach([1,2,3]);
~~~
>[danger] `attach`æ¹æ³çè¿åå¼æ¯ä¸ä¸ª`Pivot`对象å®ä¾ï¼å¦ææ¯éå å¤ä¸ªå
³èæ°æ®ï¼åè¿å`Pivot`对象å®ä¾çæ°ç»ã
### å®ä¹ç¸å¯¹çå
³è
æ们å¯ä»¥å¨`Role`模åä¸å®ä¹ä¸ä¸ªç¸å¯¹çå
³èå
³ç³»ï¼ä¾å¦ï¼
~~~
<?php
namespace app\model;
use think\Model;
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class, Access::class);
}
}
~~~
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- 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
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿