Laravel安装Stripe Cashier后迁移失败:用户表为usuarios的解决方案
解决Laravel Cashier指定自定义用户表的问题
当然可以指定Cashier使用usuarios表作为用户表,按以下步骤操作即可:
修改用户模型的表名
打开你的用户模型(默认路径App\Models\User.php),添加$table属性指定表名,同时确保引入Billabletrait: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
相关产品推荐
相关产品推荐

