Laravel Cashier执行migrate:fresh --seed报类重复错误求助
报错原因
你已通过vendor:publish命令将Cashier的迁移文件发布到了项目的database/migrations/目录下,Cashier::ignoreMigrations()的作用仅为忽略Cashier包自带的原始迁移,不会阻止加载你本地已经发布的迁移文件。该报错是因为当前本地迁移目录下存在两个类名为CreateSubscriptionsTable的迁移文件,触发了PHP类名重复冲突。
解决步骤
- 首先进入
database/migrations/目录,搜索所有文件名包含create_subscriptions_table的迁移文件,仅保留你需要使用的那一份,删除其余重复文件。如果你已经自行修改过订阅表结构,保留你修改后的版本、删除Cashier默认发布的原始迁移文件即可。 - 如果你有特殊需求必须保留两份相关迁移文件,将其中一份的类名修改为不重复的名称即可,比如把自定义的迁移类名改为
CreateCustomSubscriptionsTable,注意类名需要和文件名的后半段语义保持一致。 - 执行
composer dump-autoload命令清除Composer的类加载缓存,避免旧的类名映射残留仍被系统识别。 - 重新运行
php artisan migrate:fresh --seed验证问题是否解决。
额外验证项
确认你的App\Models\User模型中已经引入了Laravel\Cashier\Billable trait,保证Cashier功能可以正常调用你整合到users表中的stripe相关字段,无需额外的customers表即可正常运行。
内容的提问来源于stack exchange,提问作者Kylian
相关产品推荐
相关产品推荐

