You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel安装Stripe Cashier后迁移失败:用户表为usuarios的解决方案

解决Laravel Cashier指定自定义用户表的问题

当然可以指定Cashier使用usuarios表作为用户表,按以下步骤操作即可:

  • 修改用户模型的表名
    打开你的用户模型(默认路径App\Models\User.php),添加$table属性指定表名,同时确保引入Billable trait:

    namespace App\Models;
    
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Laravel\Cashier\Billable;
    
    class User extends Authenticatable
    {
        use Billable;
    
        // 指定自定义用户表名
        protected $table = 'usuarios';
    
        // 其他原有代码...
    }
    
  • 发布并修改Cashier迁移文件
    先把Cashier的迁移文件发布到本地项目,方便修改外键关联:

    php artisan vendor:publish --tag="cashier-migrations"
    

    去database/migrations目录找到所有Cashier相关的迁移文件(比如创建subscriptions、payment_methods的文件),将文件里的外键约束从关联users表改成关联usuarios表。
    示例(以subscriptions迁移为例):

    // 原代码
    $table->foreignId('user_id')->constrained()->onDelete('cascade');
    
    // 修改后
    $table->foreignId('user_id')->constrained('usuarios')->onDelete('cascade');
    

    所有涉及user_id外键的迁移文件都要做此修改。

  • (可选)配置Cashier的用户模型
    如果你的用户模型不是默认的App\Models\User,先发布Cashier配置文件:

    php artisan vendor:publish --tag="cashier-config"
    

    然后打开config/cashier.php,修改model项指向你的用户模型:

    'model' => App\Models\User::class,
    
  • 运行迁移
    现在执行迁移就能正常关联usuarios表了:

    php artisan migrate
    

内容的提问来源于stack exchange,提问作者starnix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:35:03