Auth
namespace, the function will then update the record of the Users table specifically the updated_at
and remember_token
attributes.But then, what if the
remember_token
doesn't exists? Then logging out would return the following error.SQLSTATE[42S22]:Column not found:1054 Unknown column 'remember_token' in 'field list'
How I arrive at this..
I'm converting a previous website from RoR to PHP using Laravel and I don't want to touch the database as it is right now. Since Laravel is also an MVC framework then the database should be almost the same as the other except forremember_token
which seems to be required in the Users table (or at least the model) that you'll be using for authentication.In return, when you use the Auth namespace, logging out will surely throw you an SQL error.
Solution
One way to resolve this is to just do a migration that will add the missing column. But what if you have no access to the database (or like me that don't want to add a column for some unknown reason).To solve this, we can just override the function by adding this line of code on your User model:
public function getRememberTokenName() { return null; // not supported } /** * Overrides the method to ignore the remember token. */ public function setAttribute($key, $value) { $isRememberTokenAttribute = $key == $this->getRememberTokenName(); if (!$isRememberTokenAttribute) { parent::setAttribute($key, $value); } }
You can also set the
getRememberToken
attribute to return null
but in my experience it does work even without doing it.Since
getRememberTokenName
always returns null then every null
value that needs to be set will be disregarded including the 'remember_token'. That means, 'remember_token' will not be touched on the database.
Thanks dude ! you saved me :D
ReplyDelete