调用未定义的方法 Illuminate\Database\Query\Builder::save()- Laravel 5
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/33181073/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Call to undefined method Illuminate\Database\Query\Builder::save()- Laravel 5
提问by Hymanjoesmith
I can't figure it out. I think it happens when it hits my activateAccount controller function. Inside that function I call on account_activated function where user gets saved. Plus I'm getting the first instance of the user object so I don't what's wrong.
我想不通。我认为当它遇到我的 activateAccount 控制器功能时会发生这种情况。在该函数中,我调用 account_activated 函数来保存用户。另外,我得到了用户对象的第一个实例,所以我不知道有什么问题。
This is the controller function
这是控制器功能
public function activateAccount(Request $request, User $user, $key) {
$registered = $request->session()->get('registered');
if (isset($registered)) {
$request->session()->forget('registered');
if ($user->account_activated($key)) {
// TODO
$referral = Referrals::where('activation_key', $key);
if (!empty($referral)) {
$referral->validate = 1;
$referral->save();
}
return redirect('/login')->with('success', "Your account has been activated. You many login!");
} else {
return redirect('/not-active');
}
} else {
return redirect('/');
}
}
account_activated function inside the User model
public function account_activated($key){
$user = User::where('activate_key', $key)->first();
$user->activate = 1;
$user->save();
return true;
}
This is the error msg
这是错误消息
BadMethodCallException in Builder.php line 2047:
Call to undefined method Illuminate\Database\Query\Builder::save()
in Builder.php line 2047
at Builder->__call('save', array())
at Builder->save()
at call_user_func_array(array(object(Builder), 'save'), array()) in Builder.php line 943
at Builder->__call('save', array()) in RegisterController.php line 155
at Builder->save() in RegisterController.php line 155
at RegisterController->activateAccount(object(Request), object(User), 'OjkTKaLIVAaRhveYRZz9rC1uAuPjUc6fk4BeZhUM')
at call_user_func_array(array(object(RegisterController), 'activateAccount'), array(object(Request), object(User), 'key' => 'OjkTKaLIVAaRhveYRZz9rC1uAuPjUc6fk4BeZhUM')) in Controller.php line 256
at Controller->callAction('activateAccount', array(object(Request), object(User), 'key' => 'OjkTKaLIVAaRhveYRZz9rC1uAuPjUc6fk4BeZhUM')) in ControllerDispatcher.php line 164
at ControllerDispatcher->call(object(RegisterController), object(Route), 'activateAccount') in ControllerDispatcher.php line 112
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114
at ControllerDispatcher->callWithinStack(object(RegisterController), object(Route), object(Request), 'activateAccount') in ControllerDispatcher.php line 69
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\RegisterController', 'activateAccount') in Route.php line 201
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 704
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54
回答by James
The error that you are getting isn't coming from the function that you call, but within the activateAccount
function itself.
您得到的错误不是来自您调用的activateAccount
函数,而是来自函数本身。
In particular these lines here:
特别是这里的这些行:
$referral = Referrals::where('activation_key', $key);
if (!empty($referral)) {
$referral->validate = 1;
$referral->save();
}
You need to fetch the model after giving your where clause. By the looks of it you already know how to do this, but for completeness sake you just need to add in a ->first()
:
您需要在提供 where 子句后获取模型。看起来你已经知道如何做到这一点,但为了完整起见,你只需要添加一个->first()
:
$referral = Referrals::where('activation_key', $key)->first();
if (!empty($referral)) {
$referral->validate = 1;
$referral->save();
}