Laravel Cashier - 找不到类“App\Models\User”

Posted

技术标签:

【中文标题】Laravel Cashier - 找不到类“App\\Models\\User”【英文标题】:Laravel Cashier - Class "App\Models\User" not foundLaravel Cashier - 找不到类“App\Models\User” 【发布时间】:2021-12-28 21:30:15 【问题描述】:

当尝试使用 Laravel Cashier 取消订阅时,它返回错误:

找不到类“App\Models\User”

代码:

public function cancel(Request $request) 
    $subscription = Auth::user()->subscription('default');
    $subscription->cancel();

这可能是因为我的用户模型不位于“App\Models\User”(Laravel 8 中的新默认值),而是位于“App\User”。

在官方文档中,它提到了这一点:

如果您使用 Laravel 提供的 App\Models\User 模型以外的模型,则需要发布和更改提供的 Cashier 迁移以匹配您的替代模型的表名。

但这不是问题所在。我的表名是一样的,但是我的模型的位置不一样。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:
use App\User; // this is important in your case
use Laravel\Cashier\Cashier;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()

    Cashier::useCustomerModel(User::class);

文档:https://laravel.com/docs/8.x/billing#billable-model

【讨论】:

【参考方案2】:

尝试在config/auth.php 中更改您的providers 配置

'providers' => [
  'users' => [
    'driver' => 'eloquent',
    'model' => App\User::class,
  ],
]

参考https://laravel.com/docs/8.x/authentication#the-user-provider-contract

【讨论】:

以上是关于Laravel Cashier - 找不到类“App\Models\User”的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Stripe Cashier 删除客户

Laravel 7.0 Cashier - 条纹支付异常

Laravel 6:找不到类“表单”

找不到类“Laravel\Socialite\SocialiteServiceProvider”

“找不到类 'Fideloper\Proxy\TrustProxies'” LARAVEL

在 Laravel 中找不到异常类