Laravel没有插入表

时间:2018-08-16 17:23:27

标签: sql laravel verification

基本上,我需要一个电子邮件验证系统。为了清楚起见,我将只发布需要影响的代码段。用户注册时,将生成一个随机的40字符串令牌并将其发送给他们,该代码将被附加到路由中,如下所示:

Route::get('/user/verify/{token}', 'RegisterController@verifyUser');

因此,当用户点击该链接时,路由应该调用此链接:

RegisterController:

public function verifyUser($token){

    $verifyUser = new VerifyUser();
    $verifyUser->token = $token;
    $verifyUser->getByToken();
    $user = new User();
    $user->id = $verifyUser->user_id;
    $user->get();
    if(isset($verifyUser)){
        if(!$user->verified){
            $user->updateVerifiedStatus();
            $status = "Uspešno ste verifikovali e-mail adresu. Sada se možete ulogovati";
        } else{
            $status = "Već ste se verifikovali.";
        }
    } else{
        return redirect('/')->with('error', "Vaš e-mail ne postoji");
    }

    return redirect('/')->with('status', $status);

}

verify_user是具有用户ID和令牌字段的表,如果用户未注册,则表中将没有该用户的实例,因此-> if(isset($ verifyUser)), 同样,用户表有一个“已验证”字段,该字段是一个布尔值,存储了正确和错误的值,因此-> if(!$ user-> verified)。

这是上述控制器中使用的模型

VerifyUser

class VerifyUser
{

    public $user_id;
    public $token;
    public $created_at;
    public $updated_at;


    public function getByToken()
    {
        $result =
            DB::table('verify_users')
                ->select('*')
                ->where('token', $this->token)
                ->first();

        return $result;
    }

    public function create()
    {
        $result =
            DB::table('verify_users')
                ->insert([
                    'user_id' => $this->user_id,
                    'token'   => $this->token,
                ]);

        return $result;
    }
}

用户

class User
{

    public function get()
    {
        $result =
            DB::table('users')
                ->select('*')
                ->where('id', $this->id)
                ->first();

        return $result;
    }

    public function updateVerifiedStatus()
    {
        $data = [
            'verified' => true,
        ];

        $result =
            DB::table('users')
                ->where('id', $this->id)
                ->update($data);

        return $result;
    }
}

因此,当我单击链接时,一切都通过了,我得到了成功状态,这告诉我$ user-> updateVerifiedStatus()函数已成功返回。但是,当我检查表时,该字段仍为false,并且不会更新。有什么想法吗?

0 个答案:

没有答案