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

Laravel Cashier使用自定义AppUser模型创建订阅报资源ID为空错误如何解决

错误原因

你遇到的Stripe\Exception\InvalidArgumentException报错核心是Cashier在调用Stripe接口时无法拿到有效的用户Stripe ID,触发这个问题有几个明确的配置错误:

  • 自定义了Subscription、SubscriptionItem模型,但没有在Cashier中注册,导致Cashier仍然使用默认的内置模型处理关联逻辑,关联外键不匹配。
  • Subscription模型的owner关联没有显式指定你自定义的app_user_id外键,默认会查找user_id字段,导致无法正确关联到AppUser模型,进而取不到用户的stripe_id值。
  • SubscriptionItem模型中引入Cashier基类时存在拼写错误,把Cashier写成了Cachier,会导致关联逻辑异常。
  • 多余的动态配置冲突:已经在AppServiceProvider中全局配置了自定义用户模型,又在控制器中动态修改cashier.model配置,可能引发逻辑异常。

解决方法

按照以下步骤逐一修正即可:

  1. 修正SubscriptionItem的拼写错误
    把SubscriptionItem模型中的引入代码改为正确拼写:
    use Laravel\Cashier\SubscriptionItem as CashierSubscriptionItem;
    
  2. 在AppServiceProvider中注册所有自定义模型
    在boot方法中补充自定义订阅、订阅项模型的注册代码:
    Cashier::useCustomerModel(AppUser::class);
    // 补充下面两行
    Cashier::useSubscriptionModel(\App\Models\Subscription::class);
    Cashier::useSubscriptionItemModel(\App\Models\SubscriptionItem::class);
    
  3. 修正Subscription模型的owner关联外键
    显式指定关联的外键为你自定义的app_user_id:
    public function owner()
    {
        return $this->belongsTo(AppUser::class, 'app_user_id');
    }
    
  4. 删除控制器中多余的配置代码
    删掉控制器中config(['cashier.model' => 'App\Models\AppUser']);这一行,全局配置已经生效,重复配置容易引发冲突。
  5. (可选)修正auth配置的冗余问题
    你当前users provider用的是database驱动指向app_users表,如果不需要保留默认User模型的逻辑,建议统一改为eloquent驱动,避免后续权限相关逻辑冲突:
    'providers' => [
        'app_users' => [
            'driver' => 'eloquent',
            'model' => App\Models\AppUser::class,
        ],
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\AppUser::class,
        ],
    ],
    
  6. (必要检查)确认app_users表字段齐全
    确保你的app_users表已经包含Cashier要求的字段:stripe_id、pm_type、pm_last_four、trial_ends_at,如果字段名你做了自定义,需要在AppUser模型中重写对应的getter方法,比如自定义stripe_id字段名的话补充:
    public function getStripeIdName()
    {
        return '你自定义的stripe_id字段名';
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:18:03