web-dev-qa-db-fra.com

Comment mettre à jour la colonne updated_at lorsque l'utilisateur se connecte?

J'essaie de mettre à jour la colonne updated_at à l'heure actuelle, chaque fois qu'un utilisateur se connecte.

Mais j'obtiens l'erreur suivante:

InvalidArgumentException Une année à quatre chiffres est introuvable. Données manquantes.

PHP

$input = Input::all();
$remember = (Input::has('remember')) ? true : false;

$auth = Auth::attempt([
    'username' => $input['username'],
    'password' => $input['password'],
    'active' => 1
    ],$remember
);

if ($auth) 
{
    $user = Auth::user();
    $user->updated_at = DB::raw('NOW()');
    $user->save();

    if ($user->userType==1) 
    {
        return Redirect::intended('admin');
    }
    elseif ($user->userType==2)
    {
        return Redirect::intended('corporate');
    }
    elseif ($user->userType==3) 
    {
        return Redirect::intended('trainer');
    }
    elseif ($user->userType==4) 
    {
        return Redirect::intended('user');
    }
}
18
user3416609

Vous pouvez utiliser la méthode Eloquent touch() pour cela:

//instead of
$user->updated_at = DB::raw('NOW()');
$user->save();

// simply this:
$user->touch();
58
Jarek Tkaczyk

Pour l'un, je n'utiliserais pas la colonne updated_at car c'est le nom d'horodatage par défaut.

Vous seriez mieux avec last_login

Et utilisez simplement la méthode PHP date.

$user->updated_at = date('Y-m-d G:i:s');

J'espère que cela t'aides.

6
Lee

Je pense que vous attribuez accidentellement une valeur au lieu d'utiliser la syntaxe de tableau. par exemple:

Model::create([
    'key'='val'
]);

au lieu de:

Model::create([
    'key'=>'val'
]);
0
Nik K