User Login Timestamp in TBL hinzufügen

Guten Abend,

ich bin noch totaler Newbie mit Yii2, finde das aber echt genial! Nun habe ich das Advanced Template installiert und wollte mal nun die User Authentifizierung um eine weitere Spalte "lastlogin_at" (also Timestamp des letzten Logins) erweitern.

Ich habe schon diverse Versuche unternommen, nichts hat aber funktioniert.

  • common/models/User.php um eine Methode erweitert und versucht diese über den SiteController in der Login Action zu benutzen. Das funktionierte nicht (error).

  • jetzt habe ich in der common/models/User.php in der Methode behaviors einen eigenen Behavior namens UserInfo hinzugefügt. Die common/components/UserInfo.php leitet von Behavior ab und hat nur die Methode setLoginTimestamp (siehe unten). Tja… nu stehe ich auf dem Schlauch… wie speichere ich jetzt beim Login denn den Timestamp in der Tabelle?

/common/components/UserInfo.php:


<?php


namespace common\components;


use yii\base\Behavior;


class UserInfo extends Behavior

{

    /**

     * Set Login Timestamp

     */

    public function setLoginTimestamp() {

        $this->lastlogin_at = time();

        $this->save();

    }

}

/common/models/User.php:


    public function behaviors()

    {

        return [

            TimestampBehavior::className(),

            UserInfo::className(),

        ];

    }



Kann mir hier jemand den Anstoß geben, wie ich da beim Login den Login-Timestamp in die Spalte lastlogin_at hineinbekomme?

Schönen Abend noch,

Stefan

Hi Stefan,

bin selbst Yii2 Newbie, aber folgender code funktioniert bei mir:




    public function behaviors()

    {

        return [

            'timestamp' => [

                'class' => 'yii\behaviors\TimestampBehavior',

                'attributes' => [

                                    ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],

                                    ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],

                                ],

                'updatedAtAttribute' => 'last_login',

                'value' => new Expression('NOW()'),

            ],

        ];

    }



und dann




   /**

    * Update last login timestamp

    */

    public function setLoginTime() {

        $this->touch('last_login');

    }



Hoffe es hilft.

J-C

Hi J-C,

danke für deine Antwort… aber ich stehe da wohl irgendwie etwas auf der Leitung, denn bei mir wirft das ein:

Setting unknown property: yii\behaviors\TimestampBehavior::updateAtAttribute

Gesetzt habe ich den TimestampBehavior in der User.php Klasse.

In deiner Fehlermeldung steht updateAtAttribute.

Korrekt wäre updatedAtAttribute, also mit "d"…