2015-08-08 62 views
1

當我註冊新用戶時,收銀員的方法可以正常工作以註冊該用戶。舉例來說,我有這個在我的用戶模型:

public static function registerUser() 
{ 
$user = new User; 
$stripeToken = Input::get('stripeToken'); 
$user->subscription('yearly')->create($stripeToken); 
$user->save(); 
} 

我也有我的用戶模型中的「重新訂閱」方法是使用類似的收銀員方法:

public static function resubscribe(){ 
    $email = Input::get('email'); 
    $user = DB::table('users')->where('email', '=', $email)->first(); 
    if ($user->everSubscribed()) { 
     $credentials = Input::only(['email', 'password']); 
     $stripeToken = Input::get('stripeToken'); 
     $user->subscription('monthly')->resume($stripeToken); 
     $user->save(); 
    } 
} 

,我得到以下錯誤: 「調用未定義的方法stdClass :: everSubscribed()」。

如果我刪除的條件,我得到以下錯誤:「FatalErrorException在user.php的行124:調用未定義的方法stdClass的::訂閱()」

如果我更換這行代碼:

$email = Input::get('email'); 
$user = DB::table('users')->where('email', '=', $email)->first(); 

與此:

$user = new User; 

然後,我沒有錯誤,但當然,我並不想創建一個新的用戶,我想重新訂閱我的老用戶。我在Laravel 4.2中使用幾乎相同的代碼很好地工作。謝謝你的幫助!

回答

1

您需要使用的,而不是查詢生成器雄辯:

$ USER =用戶::在哪裏( '郵件', '=',$電子郵件) - >第一();

查詢構建器DB::table('users')->where('email', '=', $email)->first()返回一個stdClass對象,而不是您的用戶模型的一個實例。

+1

謝謝@Ben。 – user3089840