本文件是
dev-expert的 Laravel/PHP 框架专项补充参考,不作为独立子技能计数,也不提供@显式调用入口。命中 Laravel、Eloquent、Blade、artisan、Migration、Form Request、Queue、PHPUnit、PHPStan 等信号时,按需与code-generation、cms-development、mysql-database、api-design、software-project协同加载。
composer.json、CI 和线上环境为准。Laravel 新项目可优先 PHP 8.2+;使用 PHP 8.4 特性前必须确认运行环境支持。toDto() 转成类型明确的参数对象。toArray() 作为长期契约。{ "success": false, "error": { "code": "...", "message": "..." } }。Model::preventLazyLoading(!app()->isProduction()) 捕获 N+1。select(['id', 'title', 'user_id']),关联加载也指定列。withCount() / withExists(),禁止加载完整关系后再 count。save() 或显式说明绕过原因。chunkById() / lazy collection,并明确并发写入风险。upsert(),并说明唯一键和更新列。$guarded = [],必须使用显式 $fillable 或受控 DTO。| 场景 | 风险 | 处理方式 |
| - | - | - |
| Model::where()->update() | 跳过 Eloquent observer、audit、model events | 需要事件时用 lockForUpdate() + save();确实批量绕过时写明原因 |
| attach/detach/sync/updateExistingPivot | 直接写 pivot 表,不触发 pivot model events | 需要审计时把 pivot 建成真实模型并通过模型写入 |
| Observer 删除文件 | 父级路径清理可能误删兄弟记录文件 | 删除动作限定到当前记录路径,复杂清理交给 Action |
| chunkById + json_decode + update | JSON 字段并发写入被旧快照覆盖 | 浅层修改用 DB 原子表达式;复杂修改需锁或维护窗口 |
| DB::afterCommit() | 只避免回滚时执行,不负责提交后失败重试 | 外部副作用默认改成 queued job + retry + failed 处理 |
| JsonResource 直接返回 Carbon | 可能绕过 model cast 的日期格式 | API 日期格式在 Resource 内显式 format 并测试 |
| 嵌套数组只写 items.*.field | 标量元素可能通过局部规则导致运行时报错 | 同时加 items.* => array |
foreignId()->constrained(),频繁过滤列要加索引并说明查询路径。$withinTransaction = false;MySQL DDL 多数会隐式提交,仍需写回滚方案。migrate:fresh 或重跑时重复插入/误覆盖。failed(Throwable $exception)、重试次数、退避策略、幂等键。Bus::chain(),批处理用 Bus::batch()。ShouldBeUnique。Init → Step → Poll 包装 Queue Job——Init 派发 Job 并建任务记录、Step(或 Job 内部批处理)更新进度、Poll 查任务状态;纯后端异步可直接用裸 Queue,无需 Init-Step-Poll 包装。/health 和 /ready:前者检查进程可响应,后者检查 DB/Redis/关键依赖。config:cache、route:cache、view:cache,并确认动态配置不依赖运行时 .env 变更。按项目实际工具选择,至少保留一条可复现证据:
composer validate
composer test
./vendor/bin/phpunit
./vendor/bin/phpstan analyse --level=8
php artisan test
php artisan route:list
code-generation:实现 Controller、Service、Action、Job、Resource。api-design:接口契约、错误 envelope、版本策略、长任务 Init-Step-Poll。mysql-database:索引、事务、慢查询、迁移回滚。test-generation + laravel-testing:Feature Test、Factory、Fake/Mock。software-project:发布、回滚、监控、告警、巡检。