Laravel Cashier&Laravel护照 - 无法调用这两个特征
问题描述:
我正在尝试创建一个API。使用Laravel收银员(带条纹)& Laravel护照。Laravel Cashier&Laravel护照 - 无法调用这两个特征
public $successStatus = 200;
public function index(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
'c_password' => 'required|same:password',
]);
if ($validator->fails()) {
return response()->json(['error' => $validator->errors()], 401);
}
$input = $request->all();
$input['password'] = bcrypt($input['password']);
$user = User::create($input);
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')->accessToken;
$success['name'] = $user->name;
$success['email'] = $user->email;
$stripeToken = 'tok_visa';
\Stripe\Stripe::setApiKey(env(STRIPE_SECRET));
try
{
$user->newSubscription('monthly')->create($stripeToken, [
'email' => $user->email, 'description' => 'Our First Customer'
]);
return response()->json(['success' => $success], $this->successStatus);
}
catch(Exception $e)
{
return response()->json(['success' => $success], $this->successStatus);
}
"message": "Call to a member function createToken() on null",
"exception": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",
"file": "/Users/Taylor/Documents/Websites/storingcompany/api/app/Http/Controllers/Register.php",
"line": 32,
"trace": [
有什么我在这里失踪?我无法从用户调用Billable模型特征。在我的控制器中,它显示在Authentiable中没有找到newSubscription而不是Billable。
我的用户类别:
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use Billable;
use HasApiTokens;
use Notifiable;
答
这不是因为不是“使用”的性状,这是因为$user
变量是null
。
您有一行代码在数据库中创建新的用户记录。紧接着的下一行,您正尝试获取当前经过身份验证的用户。我会认为这是一些注册或注册过程,所以不会有经过身份验证的用户,因为他们不存在于系统中。
$user = User::create(...);
$user = Auth::user(); // what do you expect this to be, besides `null`
$user->anyMethodEver(); // Call to a member function ... on null.
+0
谢谢你的答案!我错过了很愚蠢的事情。我习惯让用户在进行诸如$ user = $ request-> user()的调用时已经进行了身份验证。 –
你得到一个错误,什么是错误,如果你做的,什么是真正发生的事情......你能指望什么发生,什么是真正发生 – lagbox
我得到的错误如上,我想新的条纹订阅通过我的用户模型上的计费特性,但它告诉我它无法在认证下找到 –