SuperAPI AI 工具集

laravel-eloquent

编程与开发

查看项目

更新于 10-26 16:21

技能介绍

用途

该技能用于在 Laravel 13 项目中编写数据库模型层代码,核心场景是使用 Eloquent ORM 与 PHP 8.3 Attributes 来定义模型元数据、关系、查询、作用域、观察者与工厂。

主要能力

  • Attributes 优先建模:Laravel 13 以 PHP 8.3 Attributes 作为模型元数据的主要机制,如 #[Table('users')]、#[Fillable([...])]、#[Hidden([...])]、#[Guarded([...])] / #[Unguarded]、#[Appends([...])]、#[Touches([...])]、#[Connection('mysql')]、#[WithoutTimestamps]、#[Scope] 等;类型转换仍通过 casts() 方法定义,不存在 #[Casts] 属性。
  • 新旧对照:技能提供 Attributes 与旧的 $table、$fillable、$hidden、$guarded、$casts、$appends、$touches、$connection、$primaryKey 等属性之间的对应关系,并给出从 Laravel 12 到 13 的迁移参考。
  • 关系与查询:覆盖基础关系、多对多、高级关系、多态关系,以及预加载(with() 避免 N+1)、作用域、聚合、分页、批量操作与查询调试。
  • 生命周期与输出:提供事件与观察者、集合、资源、工厂、事务、性能等主题的参考文档。
  • 13.x 新增:#[Refreshes(['slug'])](13.33+,在插入或更新后重新读取生成的列)、refreshForUpdate()(13.27+,以 FOR UPDATE 锁重新加载)。
  • 模板:提供属性模型、关系模型、casts() 与访问器、观察者、带状态的工厂、API 资源、预加载示例等代码模板。

使用方式

资料中的 Agent 工作流要求:在实现前并行启动三个 Agent,分别为 fuse-ai-pilot:explore-codebase(检查现有模型及属性与 Attributes 的混用情况)、fuse-ai-pilot:research-expert(通过 Context7 核对 Laravel 13 Eloquent 与 Attributes 文档)、mcp__context7__query-docs(查询属性模式);实现后运行 fuse-ai-pilot:sniper 进行验证。

关键规则

  • Attributes 是唯一来源;对新代码使用 #[Fillable]、#[Hidden]、#[Table] 等。
  • 同一关注点不得同时使用 Attributes 和旧属性,例如同时使用 #[Fillable] 与 $fillable。
  • 使用 with() 预加载关系,避免 N+1。
  • 不得在模型自身的 boot() 或 trait 的 boot*() 中执行 new static() / new Model();Laravel 13 会抛出 LogicException。
  • 测试中使用工厂,而非硬编码测试数据。
  • 不在生产环境使用 #[Unguarded];不在访问器或修改器内执行查询;不将业务逻辑放入模型,而应使用 Services 与 Actions。

适用场景

适用于 Laravel 13 项目的模型层开发,包括新建模型、迁移旧属性写法、设计关系与查询、编写观察者、工厂与 API 资源等。

限制

资料只涉及 Laravel 13 的 Eloquent 与 Attributes 用法,未提供安装命令、收费方式与运行平台信息,这些信息暂未提供。