用途:在 Laravel 项目中创建或修改查询构建器、查询作用域及复杂数据库查询时使用。核心主张是始终使用自定义查询构建器,而不是本地 scope(local scopes),以获得更好的类型提示、类型安全的嵌套查询、集中化的查询逻辑组织、更强的可组合性以及更易隔离测试。
主要能力:定义继承 Illuminate\Database\Eloquent\Builder 的 Builder 类,封装状态过滤(如 wherePending、whereCompleted)、用户过滤(whereCustomer)、数值与日期范围(whereTotalGreaterThan、wherePlacedBetween)、关联预加载(withRelated)和排序(recent)等方法。支持在 whereHas 等关联查询中为闭包标注 Builder 类型,实现 IDE 自动补全与类型安全。可用 PHPDoc 的 @method 标注 Spatie 包或宏提供的外部方法。可通过 trait(如 HasProducts)抽取可复用查询逻辑。
使用方式:在 app/Builders 目录下创建 Builder 类,必要时在 Concerns 子目录放 trait。在模型中注册:Laravel 12+ 推荐使用 #[UseEloquentBuilder(OrderBuilder::class)] 属性;Laravel 12 之前可重写 newEloquentBuilder($query) 方法返回自定义 Builder。之后通过 Order::query()->wherePending()->whereTotalGreaterThan(10000)->withRelated()->recent()->paginate() 等方式链式调用,也支持 lazyById 惰性迭代。即使暂时为空,也建议先创建 Builder 以便未来扩展。
适用场景:需要类型安全、可组合、易测试的复杂 Eloquent 查询,尤其是涉及多条件过滤、关联嵌套查询和复用查询逻辑的 Laravel 项目。
限制:资料未提供该技能的安装命令、版本兼容范围、收费或价格信息,暂未提供。