@作者 : 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 模型的定义
默认设置
- 创建模型
php artisan make:model APP/Http/Models/User
- 而调用的时候,我们也知道表名要遵循它默认规则,修改为复数,或 特定;
class User extends Model
{
protected $table = 'user';
}
- 系统假定你的主键为 id,如果你要修改默认主键,可以特定;
protected $primaryKey = 'XXXid';
- 系统假定你的主键 id 为自增性,意味着是主键会自动转换 int 类型;
- 如果你希望不是非自增,非数值类型主键,可以设置取消;
public $incrementing = false;
- 如果你主键不是一个整数,那么需要$keyType 设置为 string;
protected $keyType = 'string';
- 系统默认情况下会接管 created_at 和 updated_at 两个时间戳列;
- 如果不想让系统干涉这两个列,可以设置 false 取消;
public $timestamps = false;
- 如果你想自定义时间戳的格式,可以设置;
protected $dateFormat = 'U';
- 可以更改创建时间 created_at 和更新时间 updated_at 字段名;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
- 默认读取 database.php 配置的数据库连接,也可以在模型端局部更改;
protected $connection = 'mysql';
模型定义
PHP LARAVEL 模型的增删改
- 比如,我们要查询
所有数据
,直接使用模型::all()
即可;
//查询所有记录
$users = User::get(); //或 all()
return $users;
- 也可以像查询构造器一样,添加各种各样的条件,写法一样;
//查询性别为男,价格大于 90,限制显示 2 条
$users = User::where(
['id' => 1]
)->limit(2)->get();
return $users;
//or
$users = Book::where([
['id', '=', 1],
])->limit(2)->get();
return $users;
- 虽然安装了插件,但模型还是没有代码提示,可以通过安装插件解决
``composer require barryvdh/laravel-ide-helper
``php artisan ide-helper:generate – 为 Facades 生成注释
``php artisan ide-helper:models – 为数据模型生成注释
``php artisan ide-helper:meta – 生成 PhpStorm Meta file
- 这里列出官网给出示例的方法,对照实验(结合详细文档,重复较多);
(1) .find(1) //通过主键查找
(2) .first() //查找第一个
(3) .firstWhere() //找到查询中的首个
(4) .find([1,2,3]) //通过数组查找
(5) .firstOr() //查找首个返回,支持闭包
(6) .firstOrFail() //找不到时返回异常
(7) .count()、max()等集合 //集合操作
$user = Book::select('id')->find()->max();
$users = Book::max('id');
return $users;
eg:还有很多在查询构造器中的方法,比如排序、分组子查询等等都可以使用
默认模型的增删改操作
- 新增方法如下,注意:默认模型接管 created_at 和 updated_at;
$BookModel = new BookModel();
$BookModel->name = '辉夜';
$BookModel->user_id = 1;
$BookModel->price = 123;
$result = $BookModel->save();
return $result;
//or
$users = BookModel::find(1);
$users->name = '夜123辉';
$users->save();
- 更新,只要是查找到一条数据的情况下使用 save() 就是更新;
- 使用 update()方法实现批量更新;
$result = BookModel::where('id', 1)
->update([
'name' => '小XX辉夜'
]);
return $result;
- 使用 create()方法实现新增,但需要在模型端
设置批量赋值的许可
;
BookModel::create([
'name' => '辉夜',
'user_id' => 1,
'price' => 123,
]);
设置批量赋值的许可
//许可批量赋值,默认不可
protected $fillable = [
'name',
'price',
'user_id',
];
注意❗:不许可的批量赋值,不可 和 $fillable 同时使用
//protected $guarded = [‘uid’];
//如何取消批量赋值限制,直接如下
protected $guarded = [];
eg:必须在模型中定义批量赋值的可填充字段,否则无法生效;防止用户不小心设置新值;
- 使用 delete()方法,可以删除数据;
$users = BookModel::find(24);
$users->delete();
return $users;
//批量删除
$users = BookModel::where('name', '123123');
$users->delete();
return $users;
- 如果你是通过主键 id 删除,那使用 destroy(id)方法,免去查询操作;
//通过主键删除
$users = BookModel::destroy(31);
return $users;
批量赋值和软删除
批量赋值
- 一般情况下,是为了防止提交过来的字段在部分场景中不需要或不能;
- 所以,我们需要通过黑白名单机制进行过滤掉必要的字段;
//通过提交过来的数据一次性新增
User::create(Request::all());
软删除
- 什么叫软删除?它相对于真实的删除,而并非真正的删除,只是隐藏了;
- 首先,需要在数据库
创建一个字段 deleted_at(默认)
,用于判断是否被软删除;
默认
设置这个字段为空(null)
,如果写入数据,成为非空状态
,则说明被删除
;- 开启软删除的功能,需要在模型端设置一下
//开启软删除功能
use SoftDeletes;
- 当开启了软删除功能,之前的删除操作,都会变成更新操作,给 deleted_at 赋值;
//删除一
$users = User::find(82);
$users->delete();
//删除二
User::destroy(81);
- 而当我们开启了软删除的功能后,此时通过正常的数据获取列表,会自动隐藏;
//软删除的数据不可见
$users = User::get();
return $users;
//单独获取被软删除的数据不行 ❌
$users = User::find(66);
return $users;
- 如果需要查询
包含软删除的数据
,通过withTrashed()
方法实现;
//获取包含软删除的数据
$users = User::withTrashed()->get();
return $users;
//获取某个被软删除的数据(即使不是软删除的也可以搜索到)
$users = User::withTrashed()->find(66);
return $users;
- 如果只想搜索出被
软删除的数据
,通过onlyTrashed()
方法实现;
//获取所有软删除的数据
$users = User::onlyTrashed()->get();
return $users;
//获取某个被软删除的数据···(只有软删除的数据才可以被搜索到)
$users = User::onlyTrashed()->find(66);
return $users;
- 如果要对这个数据进行软删除的判断,是否是被软删除的,可以使用trashed();
//判断是否是被软删除的数据
$users = User::withTrashed()->find(66);
return $users->trashed();
- 如果想将软删除的数据恢复正常(类似从回收站还原),使用 restore()方法;
//将被软删除的数据回复正常
$users = User::onlyTrashed()->find(66);
$users->restore();
- 如果开启了软删除,还需要强行真实的永久删除,可以使用 forceDelete()方法;
//开启软删除时的真实永久删除
$users = User::onlyTrashed()->find(66);
$users->forceDelete();
最后
以上是个人学习 THINKPHP 的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波