diff --git a/blog/laravel/index.md b/blog/laravel/index.md index 39ef81cfb198d1b17d604dd45a7830d748b9a6d7..40bd19ae01c00912a0c2968916e70d851c917c05 100644 --- a/blog/laravel/index.md +++ b/blog/laravel/index.md @@ -48,5 +48,9 @@ dev: [模型的关联写入](/blog/laravel/model-relation-write.md) +[模型多对多的关联写入](/blog/laravel/model-relation-write2.md) -https://www.bilibili.com/video/BV1gE411j78F?p=32&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da \ No newline at end of file +[请求和依赖注入](/blog/laravel/request.md) + + +https://www.bilibili.com/video/BV1gE411j78F?p=34&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da \ No newline at end of file diff --git a/blog/laravel/model-relation-write2.md b/blog/laravel/model-relation-write2.md new file mode 100644 index 0000000000000000000000000000000000000000..3aecb7b3ae99585e0f6ecc7f240802655667b47a --- /dev/null +++ b/blog/laravel/model-relation-write2.md @@ -0,0 +1,134 @@ +# 模型多对多的关联写入 + +```php + +class User extends Model +{ + protected $table = 'user'; + + //多对多关联 + public function roles() + { + return $this->belongsToMany(Role::class, 'user_role', 'user_id', 'role_id'); + } +} + +class Role extends Model +{ + protected $table = 'role'; +} +``` + +多对多的新增: + +```php +// 得到要添加权限的用户 +$user = User::find(1); +// 得到权限的 id,比如超级管理员 +$roleId = 1; +// 设置成超级管理员 +$user->roles()->attach($roleId); +``` + +```sql +select * from `user` where `user`.`id` = ? limit 1 +-- [1] + +insert into `user_role` (`role_id`, `user_id`) values (?, ?) +-- [1,1] +``` + +给中间表附加detail字段的数据,可以使用第二参数 + +```php +$user = User::find(1); + +$user->roles()->attach(1, ['detail'=> '备注']); +``` + +```sql +select * from `user` where `user`.`id` = ? limit 1 +-- [1] + +insert into `user_role` (`detail`, `role_id`, `user_id`) values (?, ?, ?) +-- ["备注",1,1] + +``` + +移出某个用户的角色权限 +```php +// 删除一个角色权限 +$user->roles()->detach(1); + +// PS:如果不指定中间表 id,那么就移出这个用户的所有权限角色; +``` +```sql +select * from `user` where `user`.`id` = ? limit 1 +-- [1] + +delete from `user_role` where `user_role`.`user_id` = ? and `user_role`.`role_id` in (?) +-- [1,1] +``` + +批量处理 + +```php +// 这里传递的是角色权限表的 ID +$user->roles()->attach([1,2,3]); + +$user->roles()->detach([1,2,3]); +``` + +```sql +select * from `user` where `user`.`id` = ? limit 1 +-- [1] + +insert into `user_role` (`role_id`, `user_id`) values (?, ?), (?, ?), (?, ?) +-- [1,1,2,1,3,1] +``` + +```sql +sql: select * from `user` where `user`.`id` = ? limit 1 +-- [1] + +delete from `user_role` where `user_role`.`user_id` = ? and `user_role`.`role_id` in (?, ?, ?) +-- [1,1,2,3] +``` + +同步关联,已存在不在新增 + +```php +$user->roles()->sync([1,2,3]) +``` + +```sql +select * from `user` where `user`.`id` = ? limit 1 +-- [1] + +select * from `user_role` where `user_role`.`user_id` = ? +-- [1] + +insert into `user_role` (`role_id`, `user_id`) values (?, ?) +-- [1,1] + +insert into `user_role` (`role_id`, `user_id`) values (?, ?) +-- [2,1] + +insert into `user_role` (`role_id`, `user_id`) values (?, ?) +-- [3,1] +``` + +更新指定roleId的额外字段 + +// 更新中间表的额外字段 +```php +$user->role()->updateExistingPivot(1, ['detail'=>'喀']); +``` + +```sql +select * from `user` where `user`.`id` = ? limit 1 +-- [1] +update `user_role` set `detail` = ? where `user_role`.`user_id` = ? and `role_id` in (?) +-- ["喀",1,1] +``` + diff --git a/blog/laravel/request.md b/blog/laravel/request.md new file mode 100644 index 0000000000000000000000000000000000000000..dcc6a84db88dbf7d7ff7eb6194ae97cdbc14eb92 --- /dev/null +++ b/blog/laravel/request.md @@ -0,0 +1,50 @@ +# 请求和依赖注入 + +```php + $request->input('name'), + // 全部请求参数 + 'all'=> $request->all(), + // 请求路径 + 'uri'=> $request->path(), + 'url'=> $request->url(), + 'fullUrl'=> $request->fullUrl(), + // 判断HTTP请求的方式 + 'isGet'=> $request->isMethod('GET'), + // 判断当前的uri是否匹配 + 'isTask'=> $request->is('task/*'), + ]; + } +} +``` + +请求地址: +``` +http://127.0.0.1:8000/task?name=Tom&age=23 +``` +```json +{ + "name": "Tom", + "all": { + "name": "Tom", + "age": "23" + }, + "uri": "task", + "url": "http://127.0.0.1:8000/task", + "fullUrl": "http://127.0.0.1:8000/task?age=23&name=Tom", + "isGet": true, + "isTask": false +} +``` \ No newline at end of file diff --git a/index.html b/index.html index 8509fc6cafd2f4be388f467abd6362d50bc7bc09..9ddb68a1d3d84e5bd3b1fc52d789377066b047e4 100644 --- a/index.html +++ b/index.html @@ -25,7 +25,7 @@ } .sidebar ul li a { - font-size: 16px; + font-size: 14px; } :root {