用途
该技能用于在 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 用法,未提供安装命令、收费方式与运行平台信息,这些信息暂未提供。