Как мне показать историю входа пользователя? - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок в Laravel.Я использую в своем проекте Laravel 5.8.

У меня есть эта схема:

Schema::create('user_login_histories', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->bigInteger('user_id')->unsigned();
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    $table->dateTime('date_time');
    $table->ipAddress('ip');
    $table->engine = "InnoDB";
    $table->charset = 'utf8mb4';
    $table->collation = 'utf8mb4_unicode_ci';
});

и моя модель:

class UserLoginHistory extends Model
{
    protected $quarded = ['id'];
    public $timestamps = false;
    protected $fillable = ['user_id', 'date_time', 'ip'];

    public function user()
    {
        return $this->belongsTo('App\User');
    }

    // Show User login history
    public function scopeHistory()
    {
        //return $this->hasMany('App\UserLoginHistory');
        return $this->hasMany('App\UserLoginHistory', 'user_id', 'id');
    }
}

Я хочу показать свою историю пользователей этимфункция:

public function getLoginAdminHistory(int $idAdmin)
{   
    return UserLoginHistory::history()->orderBy('id', 'desc')->paginate(25);
}

но это не работает.

Как я могу это исправить?

1 Ответ

5 голосов
/ 27 сентября 2019

То, как вы используете здесь прицел, неверно.Он не предназначен для такого использования и не поможет вам в этом вопросе, поэтому я не буду вдаваться в подробности.

Я предполагаю, что вы хотите хранить более одного UserLoginHistory per User, так что вам нужно отношение HasMany в классе User.

Итак, чтобы это работало, вам нужно что-то вроде:

in User.php

public function userLoginHistory(): HasMany
{
    return $this->hasMany(UserLoginHistory::class);
}

Теперь вы сможете сделать: $user->userLoginHistory, который вернет вам коллекцию UserLoginHistory.

public function getLoginAdminHistory(int $idAdmin)
{   
    $user = User::findOrFail($idAdmin);
    return $user->userLoginHistory()->orderBy('id', 'desc')->paginate(25);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...