Laravel迁移回滚是通过Artisan命令实现的数据库版本控制机制,核心命令为php artisan migrate:rollback,可撤销最近一次迁移批次;使用--step参数可回滚指定数量的迁移文件,--batch参数可回滚特定批次;migrate:reset用于回滚所有迁移,migrate:refresh先重置再重新执行所有迁移,mig…
Laravel API资源是处理API数据转换的核心机制,它通过创建资源类将Eloquent模型优雅地转换为一致、可控的JSON格式。使用make:resource命令生成资源类后,在toArray方法中可自定义字段输出,支持日期格式化、字段合并、类型转换及关联数据处理。通过whenLoaded方法可避免N+1查询问题,实现条件性加载关联模型。在控…
控制器是Laravel中处理HTTP请求的核心组件,负责接收路由转发的请求,解析参数并执行相应业务逻辑,如数据库操作或服务调用,最后返回响应;它提升代码可维护性与模块化程度。 Laravel控制器,简单来说,就是处理HTTP请求的“大脑”或者“指挥中心”。它接收来自路由的指令,然后决定接下来该做什么:是去数据库取数据,还是调用某个业务逻辑,最终将处…
自定义中间件是Laravel中用于在请求到达控制器前后执行特定逻辑的机制,可实现权限检查、日志记录等功能。通过Artisan命令生成中间件文件后,在handle方法中编写核心逻辑,并通过全局注册、路由别名或中间件组方式在Kernel.php中注册,实现灵活应用。 在Laravel里,自定义中间件本质上就是HTTP请求到达你的应用核心逻辑(比如控制器…
Laravel密码重置功能通过生成时效性令牌并邮件发送链接,实现安全的密码重设。用户在前端提交邮箱后,后端验证存在性并生成哈希存储的令牌,存入password_resets表,随后发送含令牌链接的邮件;用户点击链接后可设置新密码,令牌验证通过且未过期则更新bcrypt加密后的密码并删除令牌。安全性方面,Laravel采用哈希令牌、60分钟有效期、一…
Laravel模型分页通过paginate()方法实现,可自动处理SQL的LIMIT和OFFSET并计算分页信息;支持动态设置每页数量、自定义分页样式及API接口中返回JSON格式数据,便于前后端交互。 Laravel模型分页这事儿,说白了就是把数据库里一大堆数据,按你想要的大小,切成一页一页的,然后一页一页地展示出来。核心就是用paginate(…
Laravel请求对象可通过宏或继承扩展,宏适合添加轻量级方法如isApiRequest,在服务提供者中注册,实现代码复用与解耦;继承则适用于需重写方法或全局修改请求行为的场景,而Form Request更适用于验证和授权。 Laravel的请求对象(IlluminateHttpRequest)确实可以扩展,而且有几种相当优雅的方式。其中,“请求宏…
Laravel模型自关联通过在同一个模型中定义belongsTo和hasMany关系处理层级数据,如分类与子分类。核心是使用parent_id字段指向自身表的id,并设置可空以支持根节点。需为parent_id添加索引和外键约束(如ON DELETE SET NULL)以保证性能与数据完整性。查询时应使用with('parent', 'childr…
Laravel软删除通过添加deleted_at字段标记删除状态,实现数据可恢复;需在迁移中添加softDeletes()并引入SoftDeletes Trait;查询默认忽略软删除数据,可用withTrashed()或onlyTrashed()获取全部或仅软删除记录;恢复用restore(),永久删除用forceDelete();注意唯一约束冲突…
Laravel读写分离通过将读请求分发到从库、写请求发送到主库,结合sticky机制与事务处理,有效提升数据库性能和系统可扩展性,适用于高并发读多写少场景。 Laravel的读写分离,简单来说,就是将数据库的读取操作和写入操作分别指向不同的数据库实例。通常,写入操作会去到主库(Master),而读取操作则会分发到从库(Slave)。这样做最直接的目…