问题描述
在为计费模型创建新订阅时遇到问题。
我的公司模型是计费模型,并遵循 .env 文件中的文档设置 CASHIER_MODEL=App\Models\Company
。
$res = $company->newSubscription('subscription','sub_premium_monthly')->create($paymentMethod->id);
exception: "Error"
file: "/Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/Util/Util.PHP"
line: 232
message: "Object of class Illuminate\Database\Eloquent\Relations\HasManyThrough Could not be converted to string"
我有中间件检查公司的所有权(如果属于提出请求的员工),因此当它到达控制器方法以添加新订阅时,附加了 employees
关系,我得到例外。
我花了一段时间才弄清楚为什么但最后我只是在检查中间件后取消了员工的设置...但是当检查公司是否已经订阅时 $company->subscribed('subscription');
公司有一个新的订阅关系并且需要解除这种关系。
我的问题是我做错了什么,因为在调用 newSubscription
方法之前需要一个零关系的“干净”模型似乎很奇怪?
我使用的是 PHP 7.4 - laravel 8.23.1 - 收银员 12.6.3
编辑 1/21/21:
如果有帮助,下面是错误日志。
[2021-01-20 18:38:27] local.ERROR: Object of class Illuminate\Database\Eloquent\Relations\HasManyThrough Could not be converted to string {"userId":17,"exception":"[object] (Error(code: 0): Object of class Illuminate\Database\Eloquent\Relations\HasManyThrough Could not be converted to string at /Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/Util/Util.PHP:232)
[stacktrace]
#0 /Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/Util/Util.PHP(172): Stripe\Util\Util::urlEncode(Object(Illuminate\Database\Eloquent\Relations\HasManyThrough))
#1 /Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/HttpClient/CurlClient.PHP(225): Stripe\Util\Util::encodeParameters(Array)
#2 /Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/ApiRequestor.PHP(422): Stripe\HttpClient\CurlClient->request('post','https://api.str...',Array,false)
#3 /Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/ApiRequestor.PHP(119): Stripe\ApiRequestor->_requestRaw('post','/v1/subscriptio...',Array)
#4 /Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/ApiOperations/Request.PHP(63): Stripe\ApiRequestor->request('post',Array)
#5 /Users/chad/Sites/FW/vendor/stripe/stripe-PHP/lib/ApiOperations/Create.PHP(25): Stripe\ApiResource::_staticRequest('post',Array)
#6 /Users/chad/Sites/FW/vendor/laravel/cashier/src/SubscriptionBuilder.PHP(274): Stripe\Subscription::create(Array,Array)
#7 /Users/chad/Sites/FW/app/Http/Controllers/SubscriptionController.PHP(112): Laravel\Cashier\SubscriptionBuilder->create('pm_1IBlWPCZJTjT...')
#8 /Users/chad/Sites/FW/vendor/laravel/framework/src/Illuminate/Routing/Controller.PHP(54): App\Http\Controllers\SubscriptionController->store(Object(App\Models\Company),Object(Illuminate\Http\Request))
#9 /Users/chad/Sites/FW/vendor/laravel/framework/src/Illuminate/Routing/Controllerdispatcher.PHP(45): Illuminate\Routing\Controller->callAction('store',Array)
#10 /Users/chad/Sites/FW/vendor/laravel/framework/src/Illuminate/Routing/Route.PHP(254): Illuminate\Routing\Controllerdispatcher->dispatch(Object(Illuminate\Routing\Route),Object(App\Http\Controllers\SubscriptionController),'store')
此外,我尝试切换回作为计费模型的用户模型,并且工作正常。 (编辑订阅数据库行、.env 文件以及 ->subscription()、->onTrial() 等的所有实例) 仍然停留在这个奇怪的问题上。有人有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)