@作者 : SYFStrive
@博客首页 : HomePage
📜: THINK PHP
📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗
📌:觉得文章不错可以点点关注 👉:专栏连接🔗
👉 VUEJS(🔥) 👉 MYSQL(🔥) 👉 微信小程序(🔥) 👉 PHPMYSQL(🔥) 👉 UNIAPP开发(🔥)
目录
- PHP LARAVEL 简介
- PHP LARAVEL 模型的关联写入
- 关联写入
- PHP LARAVEL 多对多的关联写入
- 关联写入
- 最后
⡖⠒⠒⠒⠤⢄⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸ ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
⠀⠙⣌⠳⣄⠀⡇ 不能 ⡏⠀⠀ ⠈⠳⡌⣦⠀⠀⠀⠀
⠀⠀⠈⢳⣈⣻⡇ 白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽
提示:以下是本篇文章正文内容
PHP LARAVEL 简介
- Laravel是一种流行的开源PHP Web应用程序框架,由Taylor Otwell在2011年创建并发布。它提供了一个简洁优雅的语法和丰富的功能集,旨在使Web开发过程更快速、简单和愉悦。
-
MVC架构模式:Laravel采用了MVC(Model-View-Controller)架构模,将应用程序的逻辑分为不同的层,提高了代码的可维护性和可测试性。
-
简洁的语法和表达力:Laravel框架支持具有简洁而表达力的语法,使得编写清晰、易读、易维护的代码成为可能。
-
路由系统:它提供了一个强大且灵活的路由系统,通过简单的配置和代码即可定义Web应用程序的路由规则,实现URL到控制器的映射。
-
数据库抽象层:Laravel提供了一个简便的数据库抽象层,支持多种数据库系统,并通过Eloquent ORM提供了一种优雅的方法来与数据库进行交互。
-
权限和认证系统:Laravel提供了内置的身份验证和授权功能,使得实现用户身份验证、访问控制和权限管理变得简单和便捷。
-
缓存系统:Laravel支持多种缓存后端,包括文件、数据库、Memcached和Redis等,让你可以轻松地实现缓存数据,提升应用程序的性能。
-
强大的扩展性:Laravel通过Composer和Packagist等工具提供了丰富的扩展包生态系统,可以快速集成各种功能组件和第三方库,加快开发进程。
-
测试支持:Laravel鼓励编写和运行测试,提供了一套丰富的测试工具和断言,帮助开发者确保代码的质量和可靠性。
- 总的来说,Laravel框架以其易用性、优雅的语法、丰富的功能和强大的扩展性受到了广大开发者的喜爱。它提供了
PHP LARAVEL 模型的关联写入
关联写入
- 新增有三种方式,比如给一个用户增加关联书籍;
//先限定用户
$user = User::find(19);
//给这个用户关联的 book 新增一条记录
//user_id 会自动写入 19,title 自定义
$user->book()->save(new Book(['name' => '《哈利波特》']));
- 需要设置批量赋值,我们取消掉,book 表没有时间字段,也要取消自动写入;
//数据库模型开启 👉 protected $fillable = ['name'];
//数据库模型开启 👉 public $timestamps = false;
$user = User::find(1);
$result = $user->book()->save(new Book(['name'=>'哈哈']));
//or
//取消批量赋值 👉 protected $guarded = [];
//数据库模型开启 👉 public $timestamps = false;
$user = User::find(1);
$result = $user->book()->save(new Book(['name'=>'哈哈']));
- create 和 createMany 只需要插入数组即可完成关联新增;
$user = User::find(1);
$user->book()->create([
'name' => '《哈利波特》'
]);
$user->book()->createMany([
['name' => '《哈利波特》'],
['name' => '《指环王》']
]);
PS:还有 findOrNew、firstOrNew、firstOrCreate 和 updateOrCreate 方法;
- 有新增,自然有修改删除,直接使用 delete()和 update()方法即可;
//关联删除,删除 user_id=19 的书
$user = User::find(99);
$user->book()->delete();
//关联修改,修改 user_id=19 的书
$user = User::find(99);
$user->book()->update(['name' => '《修改书籍》']);
- 使用
associate()
方法来修改掉书籍关联的用户,即修改 user_id;
PS:修改关联的外键,即:user_id 修改,换用户
$user = User::find(20);
$book = Book::find(11);
$book->user()->associate($user);
$book->save();
PS:如果想取消一本书的拥有者,比如将 user_id 设置为 null,字段要设置可以 null;
$book = Book::find(11);
$book->user()->dissociate();
$book->save();
- 在搜索书籍的对应用户的时候,空 null 字段会导致用户出现 null 数据;
- 我们可以采用空对象默认模型的方式,去解决这个问题;
//Book.php
public function user()
{
return $this->belongsTo(User::class, 'user_id', 'id')
->withDefault([
'id' => 0,
'username' => '游客用户'
]);
}
PHP LARAVEL 多对多的关联写入
关联写入
1. 多对多的新增:比如,给用户增加一个角色权限,具体如下:
//得到要添加权限的用户
$user = User::find(99);
//得到权限的 id,比如超级管理员
$roleId = 1;
//给辉夜设置成超级管理员
$user->role()->attach($roleId);
2. 如果你想给中间表附加 details 字段的数据,可以使用第二参数;
$user->role()->attach($roleId, ['details' => '喀']);
3. 如果想移出某个用户的角色权限,可以使用 detach()方法;
//删除一个角色权限
$user->role()->detach($roleId);
PS:如果不指定中间表 id,那么就移出这个用户的所有权限角色;
4. 也支持批量处理,直接用数组传递参数即可;
//这里传递的是角色权限表的 ID
$user->role()->attach([1,2,3]); //附加值 1 => ['detail' => 'xxx']
//删除指定的 user_id
$user->role()->detach([1,2,3]);
5. 使用 sync()方法,可以新增角色权限,且可以判断已存在而不再新增;
//同步关联,已存在不在新增
return $user->role()->sync([1,2,3]); //附加值 1 => ['detail' => 'xxx']
6. 使用 udpateExistingPivot()可更新指定 roleId 的额外字段;
//更新中间表的额外字段
$user->role()->updateExistingPivot($roleId, ['details'=>'喀']);
PS:直接使用 update()是更新所有;
PS:通过查看源码或 IDE 代码提示的方法,有更多的操作;可自行阅读扩展;
最后
以上是个人学习 THINKPHP 的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波